R系统函数始终返回错误127

时间:2015-11-11 08:37:11

标签: r shell error-handling system system2

我需要从 R 执行外部工具,并在该工具中发生处理错误(如果有)。 我知道3个函数可以完成我的任务:

shell, system and system2.

试图测试那些,我看到了那个命令

shell("notepad") 

打开记事本。据我所知,shell不允许检查错误(没有接口可以查看stderr)。

当我打电话

system("notepad")

system2("notepad") 

R 冻结尝试制作这些命令。

致电

system("start notepad") 

system2("start notepad") 

返回警告

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

7 个答案:

答案 0 :(得分:14)

改编@ DavidTseng的答案(抱歉没有足够的声誉来支持它)......

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

在Windows中为我工作。

答案 1 :(得分:5)

正如我在评论中提到的,R文档显示在Windows中system()函数不会启动单独的shell(如果需要)。这就是命令行命令与system()一起运行的原因,但需要单独窗口的记事本不会运行:

来自system()的{​​{3}}:

  

最重要的区别是,在类似Unix的系统上启动一个shell然后运行命令。在Windows上,命令直接运行 - 使用shell作为通过shell运行命令的接口(默认情况下是Windows shell cmd.exe,与POSIX shell有很多不同)。

答案 2 :(得分:3)

system("bash -l", input = "notepad")

答案 3 :(得分:0)

对于Windows用户 错误:system(path("c:", "program files", "r", "anysoft.EXE")) 但有效:system(path("c:", shQuote("program files"), "r", "anysoft.EXE"))

答案 4 :(得分:0)

我不确定是否有对R的更新,因为这个问题是在大约四年前提出的,但是system("\"C:\path\to\exe.exe\" args", intern = T)对我有用,并且会打开一个单独的子窗口并在Windows 10上运行+ R 3.6 + RStudio。

不使用'intern = T'会给我返回127,并且没有运行该过程。

答案 5 :(得分:0)

我有同样的问题。安装过程中还有一个我没有做的额外步骤。

参考网址

https://amp.dev/documentation/guides-and-tutorials/learn/email-spec/amp-email-structure/

寻找“将Rtools放入PATH”

writeLines('PATH =“ $ {RTOOLS40_HOME} \ usr \ bin; $ {PATH}”',con =“〜/ .Renviron”)

答案 6 :(得分:-1)

你们使它变得如此复杂。我通过参考this answer解决了这个问题。问题出在PATH。在R中键入Sys.which(''),您将看不到任何内容。因此,您必须在CMD中设置路径,然后在R中使用Sys.setenv(PATH = '')来完成这项工作。