创建"重复" R中有一个变量的行

时间:2015-12-04 14:07:22

标签: r

很难说出这个问题,因为我不知道该怎么称呼这个机动。但是,这个想法很简单。我有一个数据帧,其中一些值是向量。

letters <- c("a", "b", "c", "d", "e")

numbers <- list(34, 23, c(23, 34, 45), 23, c(45,56,43,12))

df <- data.frame(letters)
df$numbers <- numbers

df

    letters numbers
1   a   34
2   b   23
3   c   c(23, 34, 45)
4   d   23
5   e   c(45, 56, 43, 12)

我想要获得的是一个data.frame,它通过这些向量中的对象数量复制包含列号中向量的所有行。它们必须是完全重复的,除了数字列,它应该是可变的。像这样:

    letters numbers
1   a   34
2   b   23
3   c   23
4   c   24
5   c   45
6   d   23
7   e   55
8   e   56
9   e   43
10  e   12

对此有任何简单的解决方案吗?

2 个答案:

答案 0 :(得分:2)

我们可以使用unnest

library(tidyr)
unnest(df, numbers)
#   letters numbers
#    (fctr)   (dbl)
#1        a      34
#2        b      23
#3        c      23
#4        c      34
#5        c      45
#6        d      23
#7        e      45
#8        e      56
#9        e      43
#10       e      12

答案 1 :(得分:2)

tidyr 选项是最好的,但是如果你想使用基数R,你可以这样做:

stack(setNames(numbers, letters))

#    values ind
# 1      34   a
# 2      23   b
# 3      23   c
# 4      34   c
# 5      45   c
# 6      23   d
# 7      45   e
# 8      56   e
# 9      43   e
# 10     12   e