0

我想制作一个演示工具来为独立于操作系统的 R 用户加载文件。在我使用的 Windows 系统上,shell.exec但知道这对于 mac 和 Linux 是不一样的。我相信他们使用system但不知道如何使用,因为除了shell.exec. 这是迄今为止的功能:

open_file <- function(file.name) {
    if (Sys.info()["sysname"] == "Windows") {
        shell.exec(file.name)
    } else {
#insert linux and mac equiv here (I think they're the same)                                   
    }
}  

我可以在插入的 Linux 和 Mac OS X... 部分中添加什么以使其也可以在这些机器上运行?

编辑:在我的函数 shell.exec 中打开一个恰好是 docx 的文件,它使用 MS Word,但我希望这对于打开 txt csv xlsx 文件也是通用的。

4

1 回答 1

1

请注意,shell.exec() 是 R 的 Windows 版本中可用的函数,但在 MAC 版本中不可用。您可以使用以下代码来获得您想要的功能:

shell.exec  <- function(x)
{
      # replacement for shell.exe (doesn't exist on MAC)
      if (exists("shell.exec",where = "package:base"))
            return(base::shell.exec(x))
      comm <- paste("open",x)
      return(system(comm))
}

`

这种方法的好处是它是透明的——在 Windows 机器上工作的代码将继续工作,现在也将在 Mac 机器上运行,只要文件类型是操作系统知道如何打开的东西。让它在 Unix 上工作也应该很简单。

于 2016-01-27T17:32:53.650 回答