gpt4 book ai didi

r - 如何使用 Rscript 将控制台输出写入文本文件,就像使用 R CMD BATCH 一样

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:15:07 25 4
gpt4 key购买 nike

过去,我曾使用 R CMD BATCH 在 Linux 服务器上从命令行执行 R 代码。我使用的语法是

R CMD BATCH --no-save --no-restore rcode.r output.txt

以上代码将控制台输出写入output.txt,可以在脚本运行时对其进行监控。这也可以用 Rscript 实现吗?我更愿意使用 Rscript,因为我听说 R CMD BATCH 已被弃用。

为了澄清我最初的问题,R CMD BATCH 将所有控制台输出(包括消息、警告和 print() 语句)写入 output.txt。相反,Rscript rcode.r > output.txt 仅将 print() 输出写入文本文件,而将其他所有内容写入终端。如何使用 Rscript 复制 R CMD BATCH 的行为?

最佳答案

经过一番挖掘,我发现,至少在我使用的 Linux 系统上,Rscript 只是一个方便的功能。如果你打电话

Rscript --verbose foobar.r

你会看到底层调用是:

running
'/usr/lib/R/bin/R --no-echo --no-restore --file=foobar.r'

这意味着 --no-echo 被烘焙到 Rscript 中。

因此解决方案是运行

/usr/lib/R/bin/R --no-restore --file=foobar.r > output.txt

--no-echo 被删除,输出被重定向到一个文本文件,正如@MrFlick 所建议的。除了输出之外,还将回显命令。

如果您希望默认删除 --no-echo,您可以为 Rscript 创建一个新别名。例如,在我的 .bashrc 文件中,我有以下内容:

function Rscript2() { R --no-restore --file="$1"; }
export -f Rscript2

现在,在我的 Slurm 批处理作业脚本中,我可以运行 Rscript2 file.R 以获得所需的行为:所有 R 控制台输出都包含在 slurm-*.out 文件。

关于r - 如何使用 Rscript 将控制台输出写入文本文件,就像使用 R CMD BATCH 一样,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53486153/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com