【问题标题】:What is the difference between Sys.getenv('PATH') and shell("PATH") in RR中的 Sys.getenv('PATH') 和 shell("PATH") 有什么区别
【发布时间】:2018-01-02 00:42:17
【问题描述】:

我试图在 R 中为两台计算机安装一个包。

在我的笔记本电脑 A 上,它已成功安装,而在另一台笔记本电脑 B 上,我无法安装它。然后我在谷歌上做了几个小时的搜索,意识到问题可能出在系统(或环境,我不确定这两个词是否相等)变量上。

我在我的笔记本电脑A上使用了Sys.getenv('PATH')shell("PATH"),它产生的结果完全相同,除了Sys.getenv('PATH')下的目录都有“\\”而shell("PATH")下的目录是@987654325 @。这是唯一的区别。

然后我尝试查看在计算机 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

R 中的 Sys.getenv('PATH') 和 shell("PATH") 有什么区别?电脑A是Windows7,电脑B是Windows10

【问题讨论】:

    标签: r windows rstudio


    【解决方案1】:

    Sys.getenv 将检索系统变量(您可以在系统属性 -> 环境变量中查看变量,或者只需在 Windows 本地搜索中搜索环境变量)。在您的情况下,Sys.getenv('PATH') 将检索 PATH 环境变量。

    shell('PATH') 将在 cmd 上运行 PATH 命令。我发现它可能无法在所有 Windows 发行版上正常工作。

    /// 的两个函数的结果是相同的。一种情况是printed,另一种情况是cated:

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

    一般来说,获取windowsPATHSys.getenv应该更可靠,但如果两个函数都工作,结果是相同的。

    【讨论】:

    • 谢谢!但是为什么在另一台计算机上,即装有 Windows 10 的计算机上,Sys.getenv('PATH')shell('PATH') 得到不同的结果?特别是,shell('PATH') 出现错误。而在warning message 中,为什么shell('PATH') 会尝试执行一个奇怪的命令?有什么想法吗?
    • rdocumentation.org 说“这个功能只存在于 Windows:”rdocumentation.org/packages/base/versions/3.4.1/topics/shell
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-19
    • 1970-01-01
    • 2018-11-07
    • 2013-12-25
    • 1970-01-01
    • 2020-09-03
    相关资源
    最近更新 更多