【问题标题】:R output to txt fileR输出到txt文件
【发布时间】:2014-03-31 05:49:37
【问题描述】:

我有一个分两列的数据框

userID itemID
1       101
1       103
1       107
2       102
2       103
3       104  
...

我想要的输出是将文件写入result.txt
1 \t 101 , 103 , 107
2 \t 102 , 103
3 \t 104
这里 \t 表示 userID 和 itemID 之间的制表符距离。这不像表格那样对齐。我更多的是Java和Python背景,R中通用的低级编写命令是什么?

【问题讨论】:

    标签: r output


    【解决方案1】:

    您可以为此使用 dplyr 包

    library(dplyr)
    
    df.summary <- df %.%
      group_by(userId) %.%
      summarise(itemId = paste(itemId, collapse = ","))
    
    
    write.table(x=df.summary,file='new_file.tsv',sep='\t',row.names=F)
    

    【讨论】:

      【解决方案2】:

      有点乱,但这会解决问题,将输出写入output.txt

      d <- read.table(text='userID itemID
      1       101
      1       103
      1       107
      2       102
      2       103
      3       104', header=T)
      
      cat(sapply(split(d, d$userID), function(x) 
        paste(x$userID[1], paste(x$itemID, collapse=' , '), sep='\t')), 
        sep='\n', file='output.txt')
      

      请参阅?cat?paste 了解更多详情。

      【讨论】:

        【解决方案3】:

        这是另一个使用 aggregate 的基本解决方案:

        > write.table(aggregate(d$itemID, list(d$userID), paste, collapse=' , '),
                      file='result.txt', sep='\t', col.names=FALSE, row.names=FALSE, quote=FALSE)
        1       101 , 103 , 107
        2       102 , 103
        3       104
        

        【讨论】:

          猜你喜欢
          • 2019-04-19
          • 2016-07-02
          • 2013-03-07
          • 1970-01-01
          • 2021-12-23
          • 2020-01-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多