2017-12-21 3 views
0

쉘 명령을 사용하여 R에서 간단한 외부 응용 프로그램을 실행하려고합니다.r의 쉘 명령이 디렉토리 이름의 공백으로 작동하지 않습니다.

shell('"C:\\Program Files\\SomeApp\\bin\\Release\\SomeApp.exe" "C:\\Users\\SomeUser\\R_Scripts\\RProjects\\Rprojects\\" "1" "yes"') 

명령 줄에서 대괄호로 묶어서 실행하면 완벽하게 작동합니다. 그러나 R의 쉘 명령을 통해 실행하면 오류가 발생합니다 :

'C:\Program' is not recognized as an internal or external command, operable program or batch file. 
Warning messages: 
1: running command 'C:\Windows\system32\cmd.exe /c "C:\Program Files\SomeApp\bin\Release\SomeApp.exe" "C:\Users\SomeUser\R_Scripts\RProjects\Rprojects\" "1" "yes"' had status 1 
2: In shell("\"C:\\Program Files\\SomeApp\\bin\\Release\\SomeApp.exe\" \"C:\\Users\\SomeUser\\R_Scripts\\RProjects\\Rprojects\\\" \"1\" \"yes\"") : 
'"C:\Program Files\SomeApp\bin\Release\SomeApp.exe" "C:\Users\SomeUser\R_Scripts\RProjects\Rprojects\" "1" "yes"' execution failed with error code 1 

다른 사람이 같은 문제에 직면 해 있습니까?

+0

공간에 백 슬래시를 시도 - "C : \\ 프로그램 \ 파일을 ..." –

+0

아니, 여전히 같은 오류 메시지가 표시됩니다. – mateskabe

+0

여기에는 윈도우가 없으므로 테스트 할 수는 없지만 다른 R 함수 (예 : read.table)에서는 백 슬래시 (\) (UNIX 스타일) 대신 슬래시 (/)를 사용해야합니다. – xraynaud

답변

0

공백으로 구분 된 텍스트는 큰 따옴표로 묶어야합니다. 이것은 R의 쉘 명령에 대해 작동합니다.

shell('C:\\"Program Files"\\SomeApp\\bin\\Release\\SomeApp.exe "C:\\Users\\SomeUser\\R_Scripts\\RProjects\\Rprojects\\" "1" "yes"') 
+0

당신의 큰 따옴표가 그 대답에서 적절하게 균형을 이루지 못하기 때문에 그것이 효과가 있다는 것에 놀랐습니다. 그러나 Windows 셸에서의 인용은 매우 잘 문서화되지 않았기 때문에'cmd.exe '는 상관하지 않습니다. 명령에 다른 특수 문자가 필요하면 R 함수'shQuote()'에 대한 도움말 페이지를 참조하십시오. – user2554330

+0

예, 당신 말이 맞아요. 위의 대답에서 수정했습니다. 지금은 괜찮을거야. – mateskabe