假设我们有一个字符向量:
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
函数,但不幸的是我不知道如何进行。
答案 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)))