R system functions always returns error 127
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")
Powerfool
Updated on July 09, 2022Comments
-
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 over 2 yearsThis is very useful in several ways - for instance,
system("cmd.exe", input = "tree > Tree.txt /A /F")
will make a fileTree.txt
containing a directory tree with all folders, subfolders and files.