将总和应用于 R 中向量的块?

  • 本文关键字:向量 应用于 r
  • 更新时间 :
  • 英文 :


我有一个向量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' 与tapplysum,并根据 '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

最新更新