【发布时间】:2012-11-15 11:12:12
【问题描述】:
我在 R 中有以下数据框:
> dframe
Mean Median
Candidates 85.68 60
NonCands 9.21 4
Multi 27.48 17
Mono 4.43 3
Multi NonCands 22.23 15
我想将它打印到一个文件中,并保持其良好的格式和对齐方式,如上所示。我用:
write.table(dframe,file="test",sep="\t", quote=F)
产生以下输出:
Mean Median
Candidates 85.68 60
NonCands 9.21 4
Multi 27.48 17
Mono 4.43 3
Multi NonCands 22.23 15
由于数据在 R 环境中以正确格式显示,我认为将其写入具有相同格式的文件应该很简单。显然我错了。我曾尝试使用 MASS 库中的 format() 和 write.matrix,但都没有产生预期的结果。
我看到了一些类似this one 的建议,但它似乎太复杂了,更重要的是,在使用write.table() 打印到文件时不会产生预期的结果。
那么,如何将我的数据框打印到文本文件中并让它看起来就像在 R 中一样?
更新
根据 Justin 在下方评论中的建议,我安装了 gdata 库并使用了 write.fwf。这几乎是我需要的:
write.fwf(dframe,file="test",sep="\t", quote=F, rownames=T)
产生以下输出:
Mean Median
Candidates 85.68 60
NonCands 9.21 4
Multi 27.48 17
Mono 4.43 3
Multi NonCands 22.23 15
那么,关于如何让“平均值”和“中位数”向右移动以使其与各自的列对齐的任何想法?
因为它现在可能是相关的,所以 data.frame 的创建方式如下:
labels<-c("Candidates","NonCands","Multi", "Mono", "Multi NonCands")
Mean <- c(mean(cands), mean(non),mean(multi),mean(mono),mean(multi_non))
Median <- c(median(cands), median(non),median(multi),median(mono),median(multi_non))
names(Mean)<-labels
dframe<-data.frame(Mean,Median)
【问题讨论】:
-
看看
write.fwf来自gdata包。fwf代表固定宽度文件。但是,如果用于查看文本文件的字体不是固定宽度,它可能不是均匀的。 -
@Justin,谢谢,请参阅更新后的问题。
-
确切地说,您希望行名左对齐和填充,列右对齐。 (
print.data.frame(... right=X)只允许全局设置该选项,因此需要稍作调整)。
标签: r dataframe text-alignment output-formatting