使用system2()而不是system()从R运行Powershell脚本?

ran*_*ndy 7 powershell r

我有一个PowerShell脚本(例如在C:\ directoryName\coolScript.ps1).如果我想从R调用它,我可以运行

system('powershell -file "C:\\directoryName\\coolScript.ps1"')
Run Code Online (Sandbox Code Playgroud)

如果我尝试执行相同操作system2(),则不返回任何错误,但不执行脚本.由于该system()命令的文档说system2()"建议用于新代码",我想使用system2().有没有办法做到这一点?

JPB*_*anc 14

不像system(),command命令总是被引述shQuote,所以它必须是不带参数的单个命令.

它们都有效:

system("sed -i 's/oldword\\s/oldword/g' d:/junk/x/test.tex")
system2("sed", args=c("-i", "s/oldword\\s/newword/g", "d:/junk/x/test.tex"))
Run Code Online (Sandbox Code Playgroud)

我会尝试 :

system2("powershell", args=c("-file", "C:\\directoryName\\coolScript.ps1"))
Run Code Online (Sandbox Code Playgroud)

您应该注意的另一件事是R-3.2.1\bin\i386(32位)和R-3.2.1\bin\x64(64位)中有两个版本的R可执行文件.默认情况下,只有第一个安装在32位版本的Windows上,但都安装在64位操作系统上.32位版本的R将调用PowerShell的32位版本,而64位版本则相同,因此请谨慎使用system2()正确的版本.