我有一个数据框a
和一个列表b
:
a = data.frame(a = c(1:4), c = c(1:4), b = c(1:4) )
b = c(4,3,4,5)
names(b) = c("a","c","b", "d")
> a
a c b
1 1 1 1
2 2 2 2
3 3 3 3
4 4 4 4
>b
a c b d
4 3 4 5
我想插入每个列的a
n个副本,其中n由b [i]描述。在此示例中,a
应如下所示:
a c b
1 1 1 1
2 1 1 1
3 1 1 1
4 1 1 1
5 2 2 2
6 2 2 2
7 2 2 2
8 3 3 3
9 3 3 3
10 3 3 3
11 3 3 3
12 4 4 4
13 4 4 4
14 4 4 4
15 4 4 4
16 4 4 4
我认为这在R中应该很容易,但经过大量的mapply函数实验后,我无法得到想要的结果。
答案 0 :(得分:3)
试试这个:
a[rep(seq_along(b), b), ]
答案 1 :(得分:2)
包splitstackshape
有一个非常有用的功能,用于扩展数据框的行
library(splitstackshape)
expandRows(a, b, count.is.col = FALSE)