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

2022-02-09 09:54:14 浏览数 (1)

大家好,我是飞哥,今天从老家回来了,对着电脑,感觉又来了,哈哈。

过年休息了几天,打了几天麻将,交了一点学费:

新的一年开始了,继续分享继续肝!

今天分享的是一个保存R语言不规则数据到本地的方法,感觉比较有用,希望也对你有用吧!

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

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

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

❝https://stackoverflow.com/questions/27594541/export-a-list-into-a-csv-or-txt-file-in-r ❞

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

1. 我的不规则数据

代码语言:javascript复制
> 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函数首先打开一个空文件,然后将后面屏幕的内容输进去,然后关闭文件。

代码语言:javascript复制
# 新建一个文件:va_result.txt
sink("va_result.txt") 
# 写入内容
va_list
# 关闭文件
sink()

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

代码语言:javascript复制
$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 = 不可缺少。

代码语言:javascript复制
capture.output(va_list, file = "va1_result.txt")

结果查看:

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

0 人点赞