使用向量的元素位置作为ID号的向量到数据帧

时间:2019-02-06 12:04:30

标签: r purrr

假设我们有一个字符向量:

foo <- c("A;B;C", "B;C", "F;G;H")

我想知道如何生成以下数据帧:

1 A
1 B
1 C
2 B
2 C
3 F
3 G
3 H

请注意,第一列中的数字表示组件/元素在字符向量foo中的位置。

我最初的尝试如下。我使用str_split()包中的stringr函数来分隔foo向量中的元素:

> str_split(foo, pattern = ";")
[[1]]
[1] "A" "B" "C"

[[2]]
[1] "B" "C"

[[3]]
[1] "F" "G" "H"

现在,我想,最好的主意是使用map包中的某种purrr函数,但不幸的是我不知道如何进行。

1 个答案:

答案 0 :(得分:0)

在创建一个索引为“ foo”的separate_rows后,一个选项是data.frame

library(tidyverse)
data.frame(ind = seq_along(foo), Col = foo) %>%
    separate_rows(Col)

或者使用OP的方法,将'foo'拆分为list,将名称以'foo'和stack的顺序设置为两列data.frame'

stack(setNames(str_split(foo, pattern = ";"), seq_along(foo)))