如何在R中运行PowerShell命令?

6
例如,这个PowerShell命令将返回目录中最大的前5个文件:
gci -r |sort Length -desc |select fullname -f 5

这个在R中是否可以运行并将其分配给一个变量?

我尝试了这个:

system("gci -r|sort Length -desc|select fullname -f 5")
Warning message:
running command 'gci -r|sort Length -desc|select fullname -f 5' had status 127 

我应该在这里使用 system() 吗?
1个回答

12

你可能需要这样运行它(假设PowerShell在你的路径中):

system("powershell -command \"gci -r|sort Length -desc|select fullname -f 5\"")

或者,如果你不喜欢用\ "转义"

system('powershell -command "gci -r|sort Length -desc|select fullname -f 5"')
我假设这就是R在字符串处理中转义并嵌入引号的方式(从我粗略地在Google上搜索的结果推测)。
如果你希望将输出捕获到一个变量中(具体来说,是字符向量),那么需要使用 intern = TRUE 参数:
res <- system('powershell -command "gci -r|sort Length -desc|select fullname -f 5"', intern=TRUE)

更多信息请参见:

http://stat.ethz.ch/R-manual/R-patched/library/base/html/system.html

特别地:

如果intern = TRUE,则返回一个字符向量,每行一个字符字符串表示命令的输出。

如果intern = FALSE,返回值是一个错误代码(成功为0),


可以了!当我尝试将其分配给一个var时,我得到了var [1] 0typeof(var) [1]“integer”。如何将输出内容分配给一个变量? - Nick
@Nick - 我已经更新了我的答案,但是我对R的知识有限,我只安装它来验证为什么PowerShell无法启动的猜测。 :) - Kev
非常感谢您的解释。 - Nick

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接