在Windows上使用带R的shQuote

在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

我正在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”,函数-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'))