将数据帧下沉到.txt文件

时间:2012-06-08 21:20:02

标签: r

我有一个名为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文件中吗?谢谢。

2 个答案:

答案 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)),以便输出符合您可能拥有的任何未声明的宽度要求。