【发布时间】:2021-06-20 09:15:14
【问题描述】:
我正在尝试使用 system() 在 R 脚本中从包 deepTools 运行 computeMatrix。
以下命令会收到此错误消息。
system('computeMatrix --help')
sh:computeMatrix:找不到命令
警告信息:
在系统中(“computeMatrix --help”):运行命令出错
但是,如果我在终端中运行相同的命令,一切正常。
sessionInfo()
R 版本 4.0.4 (2021-02-15)
平台:x86_64-apple-darwin17.0(64位)
运行于:macOS Big Sur 10.16
矩阵产品:默认
LAPACK:/Library/Frameworks/R.framework/Versions/4.0/Resources/lib/libRlapack.dylib
【问题讨论】:
-
在终端中运行命令时,它在交互式外壳中运行。这与直接运行命令非常不同——主要是因为它为 shell 加载配置文件,这些文件通常负责设置环境变量,例如
PATH,这会改变 shell 查找可执行文件的方式。 -
有没有简单的方法告诉 R 在哪里寻找程序或在 R 中以与终端相同的方式对其进行初始化?
-
打开终端窗口,输入
which computeMatrix,将可执行文件的完整路径复制到system命令中。 -
@samu 您可以在子shell 中执行命令。但通常你不想这样做;相反,您希望在启动 R 时正确设置
PATH。那么:R 是如何推出的? -
@user12728748 这是一个非常糟糕的主意。永远不要硬编码绝对路径(
/usr/bin/env和/bin/sh是极少数例外中的两个)。这样做只会导致维护代码并使其在其他系统(或将来的同一系统)上运行时出现问题。
标签: r macos command-line