有时候,我的结果是一个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")
结果查看:
第二种方法更简单,推荐使用。