在bash脚本中运行R脚本

3

我有两个R脚本在folder1的子文件夹中,并运行了以下脚本。对于这些R脚本,返回了“没有此文件或目录”的错误。 有人知道如何解决这个问题吗? 谢谢

Bash脚本:

#! /usr/bin/env Rscript
for dir in folder1/* ; do
Rscript script1.R
Rscript script2.R
done
3个回答

3
你的#!指定了R,而不是bash。并且你的循环是错误的。 也许尝试这样做:
#!/bin/bash Rscript
for dir in folder1/script*.R ; do
    echo "Now running $dir"
    Rscript folder1/$dir
done

3

请问 script1.Rscript2.R 是否在 folder1 的子目录中?如果是的话,请尝试以下操作:

#! /bin/bash
for dir in folder1/* ; do
    Rscript "$dir"/script1.R
    Rscript "$dir"/script2.R
done

使用find的另一种方法来运行folder1内的所有R脚本:

find folder1 -type f -name "*.R" -exec Rscript {} \;

0

你从未更改过目录,因此在执行脚本之前,你应该切换到新的子文件夹或使用完整路径来执行它们。

因此,请尝试替换

Rscript script1.R
Rscript script2.R

通过以下任一方式

cd folder1/$dir; Rscript script1.R; cd -
cd folder1/$dir; Rscript script2.R; cd -

或者

Rscript folder1/$dir/script1.R
Rscript folder1/$dir/script2.R

另外,你的 shebang 是错误的,应该是

#!/bin/bash

如果你希望你的脚本成为一个shell脚本或者类似的,请使用上述命令。目前它被当作一个R脚本来执行。

可以在Windows上实现这个。 - Duck

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接