2017-04-01 16 views
0

system()コマンドを使用して、RStudioからコマンドライン(cmd)にアクセスします。しかし、私がRスクリプトに自分のコマンドを置くと、エラーが表示され、Rが構文を受け入れないことが示されます。コマンドは次のとおりです。system()コマンドでRStudioからコマンドライン(cmd)にアクセス

system("C:\Program Files\ANSYS Inc\v150\ANSYS\bin\winx64\ansys150.exe" -p ane3fl -dir "C:\Users\hamdani\Documents" -j "hamid" -s read -l en-us -b -i "C:\Users\hamdani\Documents\Plane Stress Bracket.txt" -o "C:\Users\hamdani\Documents\fichier.out") 

エラーは次のとおりです。

Error: '\P' is an unrecognized escape in character string starting "'"C:\P" 

私はシステムコマンドで直接コマンドを置き、それは非常にうまく機能:

"C:\Users\hamdani\Documents" -j "hamid" -s read -l en-us -b -i "C:\Users\hamdani\Documents\Plane Stress Bracket.txt" -o "C:\Users\hamdani\Documents\fichier.out" 
+1

Rコードについての質問は、ここではオフトピックです。これは[SO]上では問題ないかもしれませんが、待っていればそこに移行することができます。 – gung

+0

'help(system)'をよく読んでください。 _entireコマンドは1つのstring_でなければならず、引数を保護することで引数をエスケープすることができます。 –

答えて

0

問題は方法ですRの文字列を入力する必要があります。コマンドに実行可能ファイルとファイルのパスが含まれているので、コマンドの一部は次のとおりです。

system("C:\Program Files\ANSYS Inc\v150\ANSYS\bin\winx64\ansys150.exe" ... 

しかし、Rはバックスラッシュ\を使用して、改行文字を表すために\nなどの特殊な文字を使用してエスケープシーケンスを通知します。 \シグナルがエスケープシーケンスを開始しようとしているので、バックスラッシュ文字が必要な場合は、エスケープをエスケープする必要があります。つまり、文字列内の単一のバックスラッシュ文字を取得する方法は\\です。コマンドには多くのバックスラッシュが含まれています。このタイプのエラーを得るには、それらをすべて二重にする必要があります。

関連する問題