为什么我不能在 R 中调用在我的终端中明确工作的系统函数?

Joh*_*han 6 r system

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

command <- "ls"
cat(command, "\n")
try(system(command))
Run Code Online (Sandbox Code Playgroud)

我得到一个目录列表。

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

command <- "bedtools ..."
cat(command, "\n")
try(system(command))
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

sh: bedtool..:command not found
Run Code Online (Sandbox Code Playgroud)

你认为这是一个PATH问题吗?

谢谢!

Gar*_*ini 5

确信您“安装”了该命令(它存在于某处的垃圾箱中)并在阅读您的评论后:

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

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

Sys.setenv(PATH=paste(Sys.getenv("PATH"), "/the/bin/folder/of/bedtools", sep=":"))
Run Code Online (Sandbox Code Playgroud)


mat*_*awn 1

您的床具保存在哪里?即输出是什么

which bedtools
Run Code Online (Sandbox Code Playgroud)

如果它不在你的

usr/bin
Run Code Online (Sandbox Code Playgroud)

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

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

Sys.which
Run Code Online (Sandbox Code Playgroud)

首先在 shell 中输入命令,看看它是否能在系统中运行。