2012-09-05 41 views
0

我想制作一个演示工具来为独立于OS的R用户加载文件。在Windows系统上,我使用shell.exec,但知道这与Mac和Linux不同。我相信他们使用system,但不知道如何,因为我从来没有需要使用任何东西,但shell.exec。这里的功能迄今:系统独立开启afile的方法

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文件以及。

+0

这还不是问题。什么是shell.exec应该做的?启动编辑器?从冰箱取一个冷的? –

+3

http://svn.r-project.org/R/trunk/src/library/base/man/windows/shell.exec.Rd ...也许'open'命令适用于MacOS? (我认为'系统(粘贴(“打开”,文件名))工作。)参见http://stackoverflow.com/questions/264395/linux-equivalent-of-the-mac-os-x-open-command –

+0

@感谢您的反馈。对不起,在我的脑海里,很清楚,因为我认为shell.exec行为是一种非常具体和简单的方式,我感觉这在mac/linux上并非如此。请参阅我上面的编辑。 –

回答

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上也可以很简单。

+0

我忘了我问了这个,但基本上这个作品(在文件太不只是目录作为答案的目的):http://stackoverflow.com/a/12135823/1000343 –

相关问题