我需要从 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
答案 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/
writeLines('PATH =“ $ {RTOOLS40_HOME} \ usr \ bin; $ {PATH}”',con =“〜/ .Renviron”)
答案 6 :(得分:-1)
你们使它变得如此复杂。我通过参考this answer解决了这个问题。问题出在PATH。在R中键入Sys.which('')
,您将看不到任何内容。因此,您必须在CMD中设置路径,然后在R中使用Sys.setenv(PATH = '')
来完成这项工作。