在其他列表中描述 n 的数据框中插入 n 个值

Insert n values in dataframe where n is described in other list

我有一个数据框 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 函数进行大量实验后,我无法获得想要的结果。

试试这个:

a[rep(seq_along(b), b), ]

splitstackshape有一个非常有用的功能,用于扩展数据框的行,

library(splitstackshape)
expandRows(a, b, count.is.col = FALSE)