【问题标题】:unlist strings and paste/concatenate in R在 R 中取消列出字符串并粘贴/连接
【发布时间】:2018-08-21 03:54:37
【问题描述】:

我有一个带有列表列(e.g) 的巨大数据框:

join_name <- structure(list(text = list(c("The", "lady", "you", "love"), 
    c("The", "dog", "you", "love"))), row.names = c(NA, -2L), 
    class = "data.frame")

我想将它们粘贴在一起,例如:

join_name$text=
    [1] "The lady you love"
    [2] "The dog you love"

这个循环可以完成这项工作,但是太慢了:

for(i in 1:length(join_name$text)){
  join_name$text[i]=paste(unlist(join_name$text[i], use.names=FALSE),collapse=" ")
}

知道怎么做吗?谢谢!

【问题讨论】:

标签: r


【解决方案1】:

感谢@MrFlick。答案是:

join_name$text <- sapply(join_name$text, paste, collapse=" ")

【讨论】:

    【解决方案2】:

    这是一个tidyverse 方式,对于一个简单的情况,它实际上并不比基本sapply 更好,但对于更复杂的工作流程可能有它的好处,因此我认为它值得添加。它将sapply 替换为purrr::map_chr,将paste 替换为stringr::str_c

    library(purrr)
    library(stringr)
    
    join_name <- structure(list(text = list(c("The", "lady", "you", "love"), 
                                            c("The", "dog", "you", "love"))), row.names = c(NA, -2L), 
                           class = "data.frame")
    
    map_chr(join_name$text, str_c, collapse = " ")
    #> [1] "The lady you love" "The dog you love"
    

    【讨论】:

      猜你喜欢
      • 2022-08-19
      • 1970-01-01
      • 2015-07-19
      • 2016-06-14
      • 1970-01-01
      • 1970-01-01
      • 2021-08-04
      • 2021-10-26
      • 1970-01-01
      相关资源
      最近更新 更多