0
点赞
收藏
分享

微信扫一扫

R语言列表输出到本地简单粗暴的方法

止止_8fc8 2022-02-05 阅读 44

有时候,我的结果是一个list,不能转化为data.frame数据框,强行用数据框函数输出,结果就变化了,比如:

  • fwrite
  • write.table
  • write.csv
  • write.xlsx

这些都不行。中文搜索没有找打合适的答案,后来在stackoverflow找到了,还是要用英文搜索答案呀。

所以,本着我学到了,就要写出来的原则,就写一篇总结一下,方便后来人。

1. 我的不规则数据

> va_list
$y1
             component std.error z.ratio bound %ch
vm(ID, ainv)   0.04524   0.01369   3.305     P 0.1
units!units    0.09159   0.01134   8.076     P 0.1
units!R        1.00000        NA      NA     F 0.0

$y2
             component std.error z.ratio bound %ch
vm(ID, ainv)    0.5822    0.3047   1.910     P 0.8
units!units     2.9777    0.3071   9.697     P 0.1
units!R         1.0000        NA      NA     F 0.0

$y3
             component std.error z.ratio bound %ch
vm(ID, ainv)    0.3415   0.09944   3.434     P   0
units!units     0.7387   0.08486   8.705     P   0
units!R         1.0000        NA      NA     F   0

我想把这个结果,保存到txt文件中,格式不要变。

如果我强行将其输出到txt文件或者,结果是这样的:

或者是这样的:


格式全乱了。

这里,我找到了两种方法,可以搞定。结果如下:

2. 方法1:sink函数

sink函数首先打开一个空文件,然后将后面屏幕的内容输进去,然后关闭文件。

# 新建一个文件:va_result.txt
sink("va_result.txt") 
# 写入内容
va_list
# 关闭文件
sink()

可以看到,格式没有变化。

$y1
             component std.error z.ratio bound %ch
vm(ID, ainv)   0.04524   0.01369   3.305     P 0.1
units!units    0.09159   0.01134   8.076     P 0.1
units!R        1.00000        NA      NA     F 0.0

$y2
             component std.error z.ratio bound %ch
vm(ID, ainv)    0.5822    0.3047   1.910     P 0.8
units!units     2.9777    0.3071   9.697     P 0.1

3. 方法2:capture.output函数

注意,file = 不可缺少。

capture.output(va_list, file = "va1_result.txt")

结果查看:

第二种方法更简单,推荐使用。

举报

相关推荐

0 条评论