rshellerror-handlingsystemsystem2

R system functions always returns error 127


I need to execute an external tool from R and process errors (if any) occurred in that tool. I know 3 functions to do something familiar with my task:

shell, system and system2.

Trying to test those, I see that command

shell("notepad") 

opens notepad. As far as I know shell doesn't allow to check errors (there's no interface to look into stderr).

When I call

system("notepad")

or

system2("notepad") 

R freezes trying to make those commands.

Calling

system("start notepad") 

or

system2("start notepad") 

returns warning

Warning message:
running command '"start notepad"' had status 127 

Solution

  • As I mentioned in my comments, the R documentation reveals that in Windows the system() function does not launch a separate shell (if needed). This is why command line commands run with system(), but Notepad, which needs a separate window, does not run:

    From the documentation for system():

    The most important difference is that on a Unix-alike system launches a shell which then runs command. On Windows the command is run directly – use shell for an interface which runs command via a shell (by default the Windows shell cmd.exe, which has many differences from a POSIX shell).