大家好,我是飞哥,今天从老家回来了,对着电脑,感觉又来了,哈哈。
过年休息了几天,打了几天麻将,交了一点学费:
新的一年开始了,继续分享继续肝!
今天分享的是一个保存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")
结果查看:
第二种方法更简单,推荐使用。