如何在共享计算集群上调用R中的系统命令?

如何在共享计算集群上调用R中的系统命令?,r,system-calls,singularity-container,R,System Calls,Singularity Container,我试图从R脚本中调用系统命令。我想调用的系统命令是我作为模块加载到共享计算集群(使用singularity)上的软件的名称。我遇到的问题是,当我使用system命令时,软件无法运行 系统(U.R)只有一行: system('STAR') 当然,如果我直接从shell调用该软件,它就会工作 hostname[2] STAR Usage: STAR [options]... --genomeDir /path/to/genome/index/ --readFilesIn R1.fq R2.fq

我试图从R脚本中调用系统命令。我想调用的系统命令是我作为模块加载到共享计算集群(使用singularity)上的软件的名称。我遇到的问题是,当我使用system命令时,软件无法运行

系统(U.R)只有一行:

system('STAR')

当然,如果我直接从shell调用该软件,它就会工作

hostname[2] STAR
Usage: STAR  [options]... --genomeDir /path/to/genome/index/   --readFilesIn R1.fq R2.fq
Spliced Transcripts Alignment to a Reference (c) Alexander Dobin, 2009-2020
  • 如果我运行
    which STAR
    ,我会得到
    singularity exec/apps/singularity-3/STAR/STAR-2.7.5a--0.sif STAR$@

  • system('STAR')
    替换为
    system('singularity exec/apps/singularity-3/STAR/STAR-2.7.5a--0.sif STAR$@')
    实际执行软件

  • system('which STAR')
    替换
    system('which STAR')
    ,返回
    which:no STAR in(/bin:etc…)

  • 使用
    system2('STAR')
    会给出
    sh:STAR:command not found

我只想使用
系统('STAR')
。我怎样才能做到这一点


相关帖子没有回答:

你试过吗?系统($(哪个星)怎么样?它接近您的第三个选项,但在命令中调用一个shell来计算并返回
哪个星
@JayAchar,这也不起作用。您是否将运行
系统(“echo$PATH”)
与从终端运行
echo$PATH
进行了比较?另外,可能还需要查看
.bashrc
或类似的内容(我没有奇点方面的经验)如果存在从
STAR
singularity exec的链接……
如果是这样,我认为R的
system()
不是源
。bashrc
等。这意味着你要么手工获取,要么创建引用。
hostname[2] STAR
Usage: STAR  [options]... --genomeDir /path/to/genome/index/   --readFilesIn R1.fq R2.fq
Spliced Transcripts Alignment to a Reference (c) Alexander Dobin, 2009-2020