R system functions always returns error 127

27,930

Solution 1

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).

Solution 2

Adapting @DavidTseng's answer (sorry for not having enough reputation to upvote it)...

system("cmd.exe", input = "notepad")

worked for me in Windows.

Solution 3

system("bash -l", input = "notepad")
Share:
27,930
Powerfool
Author by

Powerfool

Updated on July 09, 2022

Comments

  • Powerfool
    Powerfool almost 2 years

    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 
    
  • Dag Hjermann
    Dag Hjermann over 2 years
    This is very useful in several ways - for instance, system("cmd.exe", input = "tree > Tree.txt /A /F") will make a file Tree.txt containing a directory tree with all folders, subfolders and files.