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

时间:2017-04-20 09:12:10

标签: r list dataframe mapply

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

2 个答案:

答案 0 :(得分:3)

试试这个:

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

答案 1 :(得分:2)

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

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