在 R 中连接一个列表列

Concat a list column in R

我正在尝试连接 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 创建

试试这个。请记住,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  

在第一种情况下,您将在列表中获得结果,而在第二种情况下,您将以值的形式获得结果。

也许您需要以下内容

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

给予

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

我们可以使用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