2017-07-26 135 views
1

我試圖在R中爲兩臺計算機安裝一個軟件包。R中的Sys.getenv('PATH')和shell(「PATH」)有什麼區別

在我的筆記本電腦A上,它已成功安裝,對於另一個B,我無法安裝它。然後我在Google上搜索了幾個小時,發現問題可能在於系統(或環境,我不確定這兩個詞是否相同)中的可變因素。

我在我的筆記本電腦使用Sys.getenv('PATH')shell("PATH"),它產生完全相同的結果,除了Sys.getenv('PATH')下,該目錄都有「\\」,而shell("PATH")下,它是\。這是唯一的區別。

然後我試着看看是否在計算機B上,我無法安裝R軟件包Sys.getenv('PATH')shell("PATH")會產生相同的結果。我發現,Sys.getenv("PATH")給出一組由分隔合理目錄;但shell("PATH")

Warning messages: 
1: running command 'C:\Program Files\mingw-w64\x86_64-5.3.0-posix-seh-rt_v4-rev0\mingw64\bin /c PATH' had status 127 
2: In shell("PATH") : 'PATH' execution failed with error code 127 

是什麼Sys.getenv之間(「路徑」)和殼牌(「PATH」)中的R區別?計算機A在Windows7上,計算機B在Windows10上。

回答

0

Sys.getenv將檢索系統變量(您可以在系統屬性 - >環境變量中查看變量,或者通過在Windows本地搜索中簡單搜索環境變量)。在你的情況下,Sys.getenv('PATH')將檢索PATH環境變量。

shell('PATH')將在cmd上運行PATH命令。我看到它可能無法在所有Windows發行版上正常工作。

///這兩個函數的結果是相同的。在一種情況下,結果在print版,並在其他情況下,它是cat編輯:

print('\\') 
#[1] "\\" 
cat('\\') 
#\ 

一般用於獲取窗口PATHSys.getenv應更可靠,但結果是相同的,如果這兩種功能的工作。

+0

謝謝!但是爲什麼在另一臺裝有Windows 10的計算機上,我對Sys.getenv('PATH')和shell('PATH')有不同的結果?特別是'shell('PATH')'得到一個錯誤。在'警告消息'中,爲什麼'shell('PATH')'試圖執行一個奇怪的命令?有關於此的任何想法? –

+0

rdocumentation.org說:「這個函數只存在於Windows上:」https://www.rdocumentation.org/packages/base/versions/3.4.1/topics/shell – Spacedman

相關問題