美文网首页Cook RR语言与统计分析诗翔的R语言学习之路
【r<-方案】R调用linux出现command找不到的情

【r<-方案】R调用linux出现command找不到的情

作者: 王诗翔 | 来源:发表于2019-03-11 18:35 被阅读37次

有时候我们会在R中直接调用Linux软件命令实现在Shell下的操作,但R或RStudio与Shell本就是不同的,有时候进行调用时你会发现居然命令找不到的情况。

我举个例子,我在Shell调用Julia(安装后从没用过的一个语言/(ㄒoㄒ)/~~)的帮助命令。

$ julia --help
julia [switches] -- [programfile] [args...]
 -v, --version             Display version information
 -h, --help                Print this message

...

Okay,没问题,我们再到R里面试试。

> system("julia --help")
sh: 1: julia: not found
Warning message:
In system("julia --help") : error in running command

啊哈,找不到julia?!

这个问题的原因是Rstudio如果不是从Shell打开,他不会继承所有的Shell PATH变量,而会使用系统默认分配的PATH变量。

> Sys.getenv("PATH")
[1] "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

不像我Shell下的PATH变量/(ㄒoㄒ)/~~

好了,知道原因了就知道解决的方向。

最简单的办法是直接在脚本中将路径添加上,如

Sys.setenv(PATH=paste0("/home/wsx/julia-1.0.0/bin", Sys.getenv("PATH")))  

也可以将其永久地写入配置~/.Renvrion

PATH=/home/wsx/julia-1.0.0/bin:${PATH}

重启RStudio。

> system("julia --help")
julia [switches] -- [programfile] [args...]
 -v, --version             Display version information
 -h, --help                Print this message


更多方案与解释

相关文章

网友评论

    本文标题:【r<-方案】R调用linux出现command找不到的情

    本文链接:https://www.haomeiwen.com/subject/iyabpqtx.html