我有一个名为mytable的4列数据框,有数百行。 它看起来像
id name count rate
234 uert e@3 erwafrw23 weq 34 2
324 awrt%rw-fref-sfr-32 eq 78 4
329 jiowerfhguy qwhrb 90 8
123 234huib|f|wer fwfqwasgre 54 3
如图所示,名称包含空格和特殊字符。所以我不能使用write.table来保存data.frame。 我试过了
sink('myfile.txt')
print(mytable,right=F)
sink()
但是我遇到了一个问题,有时候这个名字很长,以至于四列不能在同一页面中一起显示,即第三列或第四列可能会运行到下一页。
有没有什么方法可以调整下沉到.txt文件的表的宽度?或者除了sink()之外,还可以使用任何其他代码将数据帧保存到.txt文件中吗?谢谢。
答案 0 :(得分:3)
似乎write.table()
应该没问题。只需指定一个分隔符,例如","
或其他未显示在name
列中的其他内容:
my.df <- data.frame(ID=c(234,324,329,123),
name = c("uert e@3 erwafrw23 weq"," awrt%rw-fref-sfr-32 eq","jiowerfhguy qwhrb","234huib|f|wer fwfqwasgre"),
count = c(34,78,90,54), rate = c(2,4,8,3))
write.table(my.df, file = "my.df.txt", sep = ",", col.names = colnames(my.df))
# read it back in
my.df2 <- read.table(file = "my.df.txt",sep = ",", header = TRUE, stringsAsFactors = FALSE)
all(my.df == my.df2)
TRUE
答案 1 :(得分:1)
您似乎对文件和控制台输出之间的区别感到困惑。使用write.table
的行的宽度没有限制,至少不会在正常使用中接近。您可以使用options(width=72)
控制控制台屏幕宽度并使用capture.output(print(mytable))
,以便输出符合您可能拥有的任何未声明的宽度要求。