【问题标题】: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
【解决方案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
在第一种情况下,您将在列表中获得结果,而在第二种情况下,您将获得它作为值。
【解决方案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