2012-06-08 50 views
1

我有一个名为mytable的4列数据框,其数百行。 它看起来像将数据帧汇入.txt文件

id   name     count  rate 
234  uert [email protected] 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文件中?谢谢。

回答

3

好像write.table()应该没问题。只指定一个分隔符,像",",还是其他什么东西在你的name柱没有出现:

my.df <- data.frame(ID=c(234,324,329,123), 
     name = c("uert [email protected] 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

你似乎混淆有关文件和控制台输出之间的差别。对write.table的线条宽度没有限制,至少不会在正常使用中会遇到的线条的宽度。您可以使用options(width=72)控制控制台屏幕宽度,并使用,以便输出符合您可能具有的任何未标明的宽度要求。