2017-07-26 683 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

相关问题