1

我正在测试 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 有什么问题吗?

谢谢!

4

1 回答 1

3

问题是您正在应用shQuote()一个包含命令及其参数的字符串。中的示例都shQuote()没有这样做,您也不应该这样做!

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

system(shQuote("echo HelloWorld"))

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

system("echo HelloWorld")
# HelloWorld

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

system(paste(shQuote("echo"), shQuote("HelloWorld")))
# HelloWorld
于 2012-05-30T23:41:38.337 回答