【问题标题】:Concat a list column in R在 R 中连接列表列
【发布时间】:2020-10-13 21:51:03
【问题描述】:

我正在尝试连接 R 中列表列中的字符。 当我尝试这种方法时,结果不是'abc',而是一个转换为字符的向量。 什么是正确的方法?

library(tidyverse)
tibble(b=list(letters[1:3])) %>% 
  mutate(b = paste(b))
#> # A tibble: 1 x 1
#>   b                       
#>   <chr>                   
#> 1 "c(\"a\", \"b\", \"c\")"

reprex package (v0.3.0) 于 2020 年 10 月 14 日创建

【问题讨论】:

    标签: r dplyr tidyverse tibble


    【解决方案1】:

    也许你需要像下面这样的东西

    library(tidyverse)
    tibble(b=list(letters[1:3])) %>% 
      mutate(b = sapply(b,paste,collapse = ""))
    

    给予

    # A tibble: 1 x 1
      b
      <chr>
    1 abc
    

    【讨论】:

    • 你也是!我们认为类似 +1!
    【解决方案2】:

    试试这个。请记住,您的 tibble 中的元素是一个列表。因此,您可以使用以下任何一种方法:

    library(tidyverse)
    tibble(b=list(letters[1:3])) %>% 
      mutate(b = lapply(b,function(x)paste0(x,collapse = '')))
    

    或者这个:

    #Code 2
    tibble(b=list(letters[1:3])) %>% 
      mutate(b = sapply(b,function(x)paste0(x,collapse = '')))
    

    输出:

    # A tibble: 1 x 1
      b    
      <chr>
    1 abc  
    

    在第一种情况下,您将在列表中获得结果,而在第二种情况下,您将获得它作为值。

    【讨论】:

    • 你真快!很好的答案,+1!
    【解决方案3】:

    我们可以使用tidyverse

    library(dplyr)
    library(stringr)
    library(purrr)
    tibble(b=list(letters[1:3])) %>%
         mutate(b = map_chr(b, str_c, collapse=""))
    # A tibble: 1 x 1
    #  b    
    #  <chr>
    #1 abc  
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-31
      • 2014-04-18
      • 2022-07-05
      • 1970-01-01
      • 1970-01-01
      • 2012-08-09
      • 2018-06-02
      • 1970-01-01
      相关资源
      最近更新 更多