在Windows上使用带有R的shQuote

时间:2012-05-30 22:20:59

标签: windows r

我正在测试R(Windows)中的bio3d软件包并遇到一个相当普遍的问题:

bio3d中的“seqaln”函数尝试发出以下系统命令:

#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有什么问题吗?

谢谢!

1 个答案:

答案 0 :(得分:3)

问题在于您将shQuote()应用于包含命令及其参数的字符串。 shQuote()中没有一个例子可以做到这一点,你也不应该这样做!

以下操作不起作用,原因与直接在Windows \"echo HelloWorld\"命令行输入时cmd失败的原因相同:

system(shQuote("echo HelloWorld"))

相反,您应该执行以下操作:

system("echo HelloWorld")
# HelloWorld

或者,如果你的命令及其参数都包含空格,你可以像这样使用shQuote()

system(paste(shQuote("echo"), shQuote("HelloWorld")))
# HelloWorld