我有一个数组,想要构建一个循环,该循环从数组的第一个值开始平均每个第二个值,在第一轮之后,循环应该从数组的第二个值开始。
例如:
3,6,18,10,2
结果应该是:
7.666,8,10
for 7.6666= (3+18+2)/3
for 8= (6+10)/2
for 10=(18+2)/2
提前致谢
我有一个数组,想要构建一个循环,该循环从数组的第一个值开始平均每个第二个值,在第一轮之后,循环应该从数组的第二个值开始。
例如:
3,6,18,10,2
结果应该是:
7.666,8,10
for 7.6666= (3+18+2)/3
for 8= (6+10)/2
for 10=(18+2)/2
提前致谢
你在寻找这样的东西吗?
x <- c(3,6,18,10,2)
n <- length(x)
sapply(seq_len(n-2), function(X) {
mean(x[seq(X, n, by=2)])
})
# [1] 7.666667 8.000000 10.000000
然后是更有趣的事情,以获得@mnel 的支持;)
n <- length(x)
m <- matrix(0, n, n-2)
ii <- row(m) - col(m)
m[ii >= 0 & !ii %% 2] <- 1
colSums(x * m)/colSums(m)
# [1] 7.666667 8.000000 10.000000
另一个给恋人的:
rev(filter(rev(x), 0:1, "r") / filter(rep(1, length(x)), 0:1, "r"))
# [1] 7.666667 8.000000 10.000000 10.000000 2.000000