2012-09-05 72 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 –

相關問題