如何在R中使用system()?

时间:2012-11-05 22:56:01

标签: r

我想调用一个系统命令来更改R控制台中的目录。

例如,

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脚本文件中以允许用户在将其包装到Package之前更改参数。我从R控制台获取的错误消息是

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

3 个答案:

答案 0 :(得分:8)

为什么不使用R命令setwd()来更改目录 - 请参阅help(setwd) - 而不是?

答案 1 :(得分: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中使用setwd()

答案 2 :(得分:1)

您是否尝试过双反斜杠?

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

使用以下命令在Windows 7中与R类似的问题:

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