shell 在r系统命令中传递变量

dsf9zpds  于 2023-10-23  发布在  Shell
关注(0)|答案(3)|浏览(133)

我试图将变量作为参数传递给R中的系统命令。

> system("ls>abc.csv")  #this works
> k<-"abc.csv"          
> system("ls>k")        #this does not work
> system2("ls>k")       #this does not work
sh: ls>k: command not found
> system("ls>$k")      #this does not work
sh: $k: ambiguous redirect
fquxozlt

fquxozlt1#

您可以使用paste构建OS命令并传递给system

system(paste("ls >", k))
t3irkdon

t3irkdon2#

这里的问题是,如果你把变量k放在字符串中,R无法识别它。但如果你想反复使用文件名,把文件名放在变量中确实很有用。
你能试

system(paste0("ls>", k))

如果这样做有效,你也可以写一个小函数:

"%&%" <- function(a, b)paste0(a, b)

然后你就可以

system("ls>"%&%k)
xesrikrc

xesrikrc3#

你可以先用你想要的消息定义一个字符串,例如mystr=paste(“ls”,“/data/files/”),然后调用system as system(mystr),它就会工作。实际上,它与上面的答案几乎相同,但更强调首先将消息创建为字符串

相关问题