1

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

4

2 回答 2

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
于 2012-06-08T21:36:32.127 回答
2

您似乎对文件和控制台输出之间的区别感到困惑。带有 的线条的宽度没有限制write.table,至少在正常使用中不会接近。options(width=72)您可以使用和使用来控制控制台屏幕宽度,capture.output(print(mytable))以便输出满足您可能拥有的任何未说明的宽度要求。

于 2012-06-08T22:45:30.673 回答