很难说出这个问题,因为我不知道该怎么称呼这个机动。但是,这个想法很简单。我有一个数据帧,其中一些值是向量。
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
对此有任何简单的解决方案吗?
答案 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