簡體   English   中英

R 系統函數總是返回錯誤 127

[英]R system functions always returns error 127

我需要從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 

調整@DavidTseng 的答案(抱歉沒有足夠的聲譽來支持它)...

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

在 Windows 中為我工作。

正如我在評論中提到的,R 文檔顯示在 Windows 中system()函數不會啟動單獨的 shell(如果需要)。 這就是為什么命令行命令使用system()運行,但需要單獨窗口的記事本不運行:

system()文檔中:

最重要的區別是在類 Unix 系統上啟動一個 shell,然后運行命令。 在 Windows 上,命令直接運行——使用 shell 作為通過 shell 運行命令的接口(默認情況下,Windows shell cmd.exe,它與 POSIX shell 有很多不同)。

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

我不確定 R 是否有更新允許這樣做,因為這個問題是在大約四年前提出的,但是system("\\"C:\\path\\to\\exe.exe\\" args", intern = T)對我有用,將打開一個單獨的子窗口,並在 Windows 10 + R 3.6 + RStudio 上工作。

不使用 'intern = T' 會給我一個 127 的返回碼並且沒有運行該過程。

我遇到過同樣的問題。 安裝過程中還有一個我沒有做的額外步驟。

參考網址

https://cran.r-project.org/bin/windows/Rtools/

尋找“將 Rtools 放在 PATH 上”

writeLines('PATH="${RTOOLS40_HOME}\\usr\\bin;${PATH}"', con = "~/.Renviron")

對於 Windows 用戶錯誤: system(path("c:", "program files", "r", "anysoft.EXE"))但有效: system(path("c:", shQuote("program files"), "r", "anysoft.EXE"))

你們把事情搞得這么復雜。 我通過參考這個答案解決了這個問題。 問題出在 PATH 上。 在 R 中輸入Sys.which('') ,你將什么也看不到。 所以你必須在 CMD 中設置路徑,然后在 R 中使用Sys.setenv(PATH = '')來完成這項工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM