交互式R命令的输出结果如何保存

2023-10-23 19:06:49 浏览数 (2)

读者的问题是,他一个R命令在rstudio的console里面显示出来的日志最多就1000行,这样的话它很多信息被淹没了,所以鼠标滚轮是没办法查看被淹没的信息,求解决方案:

最多就1000行

这个时候有治标和治本的两个方案:

治标:修改最大显示行

我们通过求助chatGPT,通过BioinfoArk提供的中国区chatGPT查询,发现它给出来的options命令里面的max.print设置 并不是我们需要的

max.print设置

然后反复沟通后,发现chatGPT这次让我设置 max.show.history ,其实也不对:

max.show.history

因为它改变的是“是否输出”,如下所示:

改变的是“是否输出”

调大这些参数,确实是能让它输出,但是没有保存在console,应该是有其它参数,但是求助chatGPT也需要反复沟通和调试:

代码语言:javascript复制
options(max.show.history = 200000)

后来chatGPT给了我治本的方法,就是存储输出结果在文件里面:

代码语言:javascript复制
lapply(1:1000, print)  -> output_file

sink("output.log")
output_file
sink()
getwd()

这个时候输出的 output.log 文件里面的就有无限制的信息啦!

治本的方法;输出到日志文件

其实也可以借鉴Linux的黑白命令行里面的重定向语法,通过BioinfoArk提供的中国区chatGPT查询

在Linux命令行中,你可以使用重定向符号来将命令的输出结果保存到文件中。下面是一些常用的重定向符号和用法:

  • >:将命令的标准输出重定向到文件中,如果文件不存在则创建,如果文件已存在则覆盖原有内容。例如:
代码语言:javascript复制
command > output.txt 

这将将命令的标准输出保存到名为output.txt的文件中。

  • >>:将命令的标准输出追加到文件中,如果文件不存在则创建。例如:
代码语言:javascript复制
command >> output.txt 

这将将命令的标准输出追加到名为output.txt的文件中。

  • 2>:将命令的错误输出重定向到文件中。例如:
代码语言:javascript复制
command 2> error.txt 

这将将命令的错误输出保存到名为error.txt的文件中。

  • 2>>:将命令的错误输出追加到文件中。例如:
代码语言:javascript复制
command 2>> error.txt 

这将将命令的错误输出追加到名为error.txt的文件中。

  • &>&>>:将命令的标准输出和错误输出都重定向到文件中。例如:
代码语言:javascript复制
command &> output.txt 

这将将命令的标准输出和错误输出都保存到名为output.txt的文件中。

所以我们不能在rstudio里面运行命令,需要在Linux里面运行,比如我们如下所示重建一个脚本文件:tmp.R ,它里面有R代码,所以可以运行它,并且输出内容:

R代码

另外一个选项是直接运行命令,如下所示:

代码语言:javascript复制
Rscript -e "a=1:100;print(a)"

这样的话,这个命令因为是在Linux里面运行,所以可以借鉴重定向,很简单的保存结果:

代码语言:javascript复制
Rscript -e "a=1:100;print(a)" 1 > log 2>err

这个时候有 log和err两个文件,只需要肉眼查看里面的信息即可,无论是文件信息行数量多大,都可以看!

0 人点赞