【问题标题】:sink a data frame to .txt file将数据框接收到 .txt 文件
【发布时间】:2012-06-08 21:20:01
【问题描述】:

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

【问题讨论】:

    标签: r


    【解决方案1】:

    似乎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
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2018-04-19
        • 1970-01-01
        • 2020-03-29
        • 2015-04-08
        • 1970-01-01
        • 2023-03-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多