For循环:提取序列中的值,计算它,并将其返回到同一位置

时间:2014-11-04 05:48:00

标签: r function for-loop

我会保持这个简单。

让我们假设:

n <- rep(seq(100, 5000, by=50), length.out=1000)
a <- NULL

我想写一个For循环函数,它将在向量&#39;中采用相同的值(例如,所有100个,所有150个,所有200个&#39;等等)。 ñ&#39;添加它们,并在向量&#39; a&#39;中以相同的顺序返回总和,以便:

a[1, 100, 199]
1100, 1100, 1100
a[2, 101, 200]
1650, 1650, 1650
a[99, 198, 297]
50000, 50000, 50000

换句话说,n应该包含11 100个,11个150个,11个200个,......和10个5000个,我想抓住类似的元素,添加它们,并在向量&#39; a&#39;中按顺序排列相似元素的总和。 我希望这是有道理的。

1 个答案:

答案 0 :(得分:0)

尝试

a1 <-ave(n,n,FUN=sum)
a1[c(1,100,199)]
#[1] 1100 1100 1100

a1[c(2,101,200)]
#[1] 1650 1650 1650

a1[c(99,198,297)]
#[1] 50000 50000 50000

或者,如果您想要lapply解决方案

a <- unsplit(lapply(split(n,n),function(x) rep(sum(x),length(x))),n)