有必要通过增加每行中的每一行(无重复的组合)并将结果写入新的数据帧来“增加”数据帧。结果是与原始数据帧相比,行数很多,因此我想没有循环,例如决定应用。数据框例如:
1 3 6
2 2 4
5 1 2
6 4 1
结果应为:
1 3 6
2 2 4
5 1 2
6 4 1
3 5 10
6 4 8
7 7 7
7 3 6
8 6 5
11 5 3
答案 0 :(得分:3)
我们可以使用combn
并生成一次取2的行号组合,添加一个自定义函数以添加这些行并将其与原始数据帧绑定。
rbind(df, do.call("rbind",
combn(1:nrow(df), 2, function(x) df[x[1], ] + df[x[2], ], simplify = FALSE)))
# V1 V2 V3
#1 1 3 6
#2 2 2 4
#3 5 1 2
#4 6 4 1
#11 3 5 10
#23 6 4 8
#32 7 7 7
#21 7 3 6
#22 8 6 5
#31 11 5 3
仅供参考,关键部分是
combn(1:nrow(df), 2) #which gives
# [,1] [,2] [,3] [,4] [,5] [,6]
#[1,] 1 1 1 2 2 3
#[2,] 2 3 4 3 4 4
此输入用于子集原始数据帧中的行。