为什么这个 R 输出没有被重定向?

Kia*_*ian 1 bash r

我使用的是 Ubuntu 14.04。我喜欢使用命令从终端 (bash) 运行 R 脚本Rscript。我喜欢将输出重定向到文件,例如:

\n\n
Rscript some_R_code.R > output.log &\n
Run Code Online (Sandbox Code Playgroud)\n\n

(我喜欢在后台运行它,这就是我使用 & 的原因)。

\n\n

事实上,99% 的输出确实会发送到该文件。但我确实收到了一些奇怪的小信息,但实际上没有。例如:

\n\n
Warning message:\nreplacing previous import \xe2\x80\x98getCall\xe2\x80\x99 when loading \xe2\x80\x98fBasics\xe2\x80\x99 \n
Run Code Online (Sandbox Code Playgroud)\n\n

当我想要将其输出到文件时,它会输出到终端。

\n\n

造成这种情况的原因是什么?如何解决?

\n

Pey*_*ton 5

您定向stdout到一个文件,但警告实际上转到stderr. 您可以使用以下命令重定向stderr和:stdout&>

Rscript some_R_code.R &> output.log &
Run Code Online (Sandbox Code Playgroud)

或者您可以重定向stderr到一个单独的文件:

Rscript some_R_code.R > output.log 2> err.log &
Run Code Online (Sandbox Code Playgroud)