【问题标题】:Why can't I call system functions in R that clearly work in my terminal?为什么我不能在 R 中调用可以在我的终端中清楚地工作的系统函数?
【发布时间】:2014-11-21 19:39:44
【问题描述】:

我正在尝试在 R 中调用系统函数。我正在使用 mac。如果我传递一个内置函数(例如ln),它就没有问题:

command <- "ls"
cat(command, "\n")
try(system(command))

我得到一个目录列表。

但是,如果我从第三方安装函数(例如二进制文件),它就不起作用(即使它在终端中起作用)。

command <- "bedtools ..."
cat(command, "\n")
try(system(command))

我收到以下错误:

sh: bedtool..:command not found

您认为这是 PATH 问题吗?

谢谢!

【问题讨论】:

  • 您是否意识到您的command 输入与您的错误消息不匹配
  • 它不可能是 PATH 问题,如果它在 CL 中工作。不幸的是,你没有给出一个可重复的例子,而且很难从这里开始。
  • @rawr 你好!这是另一个错字。对不起。
  • @user2472704 system2('bedtools') 工作与否
  • @rawr 它没有。 :(

标签: r system


【解决方案1】:

您的床具保存在哪里?即

的输出是什么
which bedtools

如果它不在你的

usr/bin

然后系统命令给出该错误。将 betools 保存在那里,它应该可以工作。

从系统帮助文件中建议尝试

Sys.which

先在你的 shell 输入命令,看看它是否能在系统中工作。

【讨论】:

  • @user2472704,这有帮助吗?
【解决方案2】:

考虑到您确实“安装”了该命令(它存在于某处的 bin 中)并在阅读了您的评论后:

如果我打开函数二进制文件所在的 RStudio(例如 open -a RStudio),它就没有问题。

我猜这确实是一个 PATH 问题。一个可能的解决方法是:

Sys.setenv(PATH=paste(Sys.getenv("PATH"), "/the/bin/folder/of/bedtools", sep=":"))

【讨论】:

  • 很好奇为什么多年后 R 仍然不从 bashrcbash_profile 中提取路径...
猜你喜欢
  • 2021-01-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多