在其他列表中描述 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)
我有一个数据框 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)