使用Tidyverse将列表转换为矢量

时间:2016-12-28 16:08:10

标签: r dplyr tidyr stringr purrr

以下是来自" R for Data Science"的简单示例:

df <- tribble(
  ~x1,
  "a,b,c",
  "d,e,f,g"
)

现在我可以像这样创建一个列表列:

df <- df %>%
  mutate(x2 = stringr::str_split(x1, ","))

现在数据如下所示:

# A tibble: 2 × 2
       x1        x2
    <chr>    <list>
1   a,b,c <chr [3]>
2 d,e,f,g <chr [4]>

这是一个问题:如果我只有x2,我该如何从中恢复x1?

unnest()不起作用,因为它会更改数据的形状。

2 个答案:

答案 0 :(得分:5)

尝试

df %>% 
  mutate(x1_new = map_chr(x2, paste, collapse = ','))

(我假设您已经加载了包purrr,因为您已经提到tidyverse

答案 1 :(得分:2)

非常好。此外,在tidyverse内:

df <- df %>% 
  mutate(x3 = map_chr(x2, stringr::str_c, collapse = ','))
df

也有效。