R 对列值的组合求和
我有一个数据框,有两列,看起来像R 对列值的组合求和,r,for-loop,combinations,R,For Loop,Combinations,我有一个数据框,有两列,看起来像 richness<- data.frame ("replicate_id"=c("1", "9", "10"), "richness"= c(3, 2, 4)) 归根结底,我不关心replicate\u id,只希望得到的输出类似于: output<- data.frame ("n.replicates"=c("1", "1", "1", "2", "2", "2", "3"),
richness<- data.frame ("replicate_id"=c("1", "9", "10"),
"richness"= c(3, 2, 4))
归根结底,我不关心replicate\u id
,只希望得到的输出类似于:
output<- data.frame ("n.replicates"=c("1", "1", "1", "2", "2", "2", "3"),
"richness"= c(3, 2, 4, 5, 7, 6, 9))
output我们可以使用lappy
并在richness
的每一行上循环,然后一次创建richness
的所有组合。然后,我们创建该组合的数据帧,然后将它们结合在一起
do.call("rbind", lapply(seq_along(richness$replicate_id), function(x) {
temp = combn(richness$richness, x)
data.frame(n.replicate = x, richness = colSums(temp))
}))
# n.replicate richness
#1 1 3
#2 1 2
#3 1 4
#4 2 5
#5 2 7
#6 2 6
#7 3 9
不带do.call
参数的中间步骤返回
lapply(seq_along(richness$replicate_id), function(x) {
temp = combn(richness$richness, x)
data.frame(n.replicate = x, richness = colSums(temp))
})
# [[1]]
# n.replicate richness
#1 1 3
#2 1 2
#3 1 4
#[[2]]
# n.replicate richness
#1 2 5
#2 2 7
#3 2 6
#[[3]]
# n.replicate richness
#1 3 9
do.call("rbind", lapply(seq_along(richness$replicate_id), function(x) {
temp = combn(richness$richness, x)
data.frame(n.replicate = x, richness = colSums(temp))
}))
# n.replicate richness
#1 1 3
#2 1 2
#3 1 4
#4 2 5
#5 2 7
#6 2 6
#7 3 9
lapply(seq_along(richness$replicate_id), function(x) {
temp = combn(richness$richness, x)
data.frame(n.replicate = x, richness = colSums(temp))
})
# [[1]]
# n.replicate richness
#1 1 3
#2 1 2
#3 1 4
#[[2]]
# n.replicate richness
#1 2 5
#2 2 7
#3 2 6
#[[3]]
# n.replicate richness
#1 3 9