2012-11-05 37 views
0

我想調用一個系統命令來改變R控制檯中的目錄。如何在R中使用system()?

例如,

system(paste('"cd C:/Users/Dropbox/RPackages"'),intern = TRUE) 
system(paste('"R CMD build test"')) 
system(paste('"R CMD check test"')) 
system(paste('"R CMD INSTALL test"')) 
library(test) 

這些命令都應該在Windows命令提示符下運行。但我想埋葬他們的RGUI腳本文件中允許的參數由用戶進行更改之前包裝成我來自R控制檯得到一個Package.The錯誤消息

Error in system(paste("\"cd C:/Users/Dropbox/RPackages"\""), intern = TRUE) : 
'"cd C:/Users/Dropbox/RPackages"' not found 

我也試過

system("cd C:/Users/Dropbox/RPackages",intern = TRUE) 

但得到了類似的錯誤消息

Error in system("cd C:/Users/Dropbox/RPackages", intern = TRUE) : 
'cd' not found 
+1

心不是這個什麼'devtools'是專門做? https://github.com/hadley/devtools – Chase

+0

正如@Chase提到的,你可能不想自己做所有這些,你可能想使用'devtools :: check'。 – hadley

回答

8

你爲什麼不使用R命令setwd()更改目錄 - 見help(setwd) - 呢?

1

system()在其自己的解釋器中運行每個命令。對工作目錄所做的任何更改都不會傳播。

如果你想在工作目錄中做幾件事,把所有的命令放在一個調用system的地方,用分號隔開(這適用於Linux shell,不知道Windows)。與\ n分離也適用於Linux,試試?

比較這些:

> getwd() 
[1] "/nobackup/rowlings/Downloads/Dirs" 
> system("cd Foo; pwd") 
/nobackup/rowlings/Downloads/Dirs/Foo 
> system("cd Foo") ; system(" pwd") 
/nobackup/rowlings/Downloads/Dirs 

根據您的實際問題,你可能會在R.

1

使用setwd()你有沒有嘗試過雙斜槓後面會更好?

'C:\\Users\\Dropbox\\RPackages' 

也有類似的問題,有R使用Windows 7:

download.file(url=<url>, destfile='C:\\<dir>\\<dir>\\<file>') 
相關問題