在Windows上使用带R的shQuote
我正在R(Windows)中测试bio3d软件包,遇到了一个相当普遍的问题: bio3d中的“Sequaln”函数尝试发出以下系统命令:在Windows上使用带R的shQuote,windows,r,Windows,R,我正在R(Windows)中测试bio3d软件包,遇到了一个相当普遍的问题: bio3d中的“Sequaln”函数尝试发出以下系统命令: #cmd = "muscle -in C:\\Users\\derek\\AppData\\Local\\Temp\\RtmpUSXJCb\\file756f52c9 -out c:/pdb/temp.fas -seqtype protein" system(shQuote(cmd)) 据我所知,什么也没发生。然而,一旦我删除了“shQuote”,函数-s
#cmd = "muscle -in C:\\Users\\derek\\AppData\\Local\\Temp\\RtmpUSXJCb\\file756f52c9 -out c:/pdb/temp.fas -seqtype protein"
system(shQuote(cmd))
据我所知,什么也没发生。然而,一旦我删除了“shQuote”,函数-seqaln-就按预期工作了。shQuote所做的一切都是在命令周围添加一对“”
"\"C:/_utils/muscle.exe -in C:\\Users\\kfoo\\AppData\\Local\\Temp\\RtmpUSXJCb\\file756f52c9 -out c:/pdb/temp.fas -seqtype protein\""
使用shQuote有什么问题吗
谢谢 问题在于,您正在将
shQuote()
应用于同时包含命令及其参数的字符串。shQuote()
中的示例都不能这样做,您也不应该这样做
以下操作不起作用,原因与直接在Windows的命令行中键入时,\“echo HelloWorld\”
失败的原因相同:
system(shQuote("echo HelloWorld"))
相反,您应该执行以下操作:
system("echo HelloWorld")
# HelloWorld
或者,如果您的命令及其参数都可能包含空格,您可以像这样使用shQuote()
:
system(paste(shQuote("echo"), shQuote("HelloWorld")))
# HelloWorld
最佳选择:
system2('command',shQuote(c('Hello World','second arg'))