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()それをしていませんし、あなたもそうすべきではありません!

\"echo HelloWorld\"以下は、Windowsのcmdコマンドラインで直接入力したときに失敗するのと同じ理由で機能しません。

system(shQuote("echo HelloWorld"))

代わりに、次のことを行う必要があります。

system("echo HelloWorld")
# HelloWorld

または、コマンドとその引数の両方にスペースが含まれている可能性がある場合は、次shQuote()のように使用できます。

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