我有一个向量v
,其中包含我需要从另一个向量w
添加的元素数量。如何在 R 中执行此操作?
例
v = c(4,0,3,3,0,0)
w = rexp(10,1)
所以,我需要一个包含c(w[1]+w[2]+w[3]+w[4],0,w[5]+w[6]+w[7],w[8]+w[9]+w[10],0,0)
的新向量。如何构建这样的向量?我想过使用apply
但我不知道该怎么做。for
循环也可以工作,但零存在问题。
我们可以在'v' 序列上使用rep
来创建分组变量,使用分组变量获取 'w' 与tapply
的sum
,并根据 '0' 在 'v' 中的位置附加 0
r1 <- unname(tapply(w, rep(seq_along(v), v), FUN = sum))
i1 <- which(v==0)-1
for(i in seq_along(i1)) r1 <- append(r1, 0, after = i1[i])
r1
#[1] 2.951259 0.000000 2.982644 4.233564 0.000000 0.000000