4

私は配列を持っており、配列の最初の値から始まる毎秒の値を平均するループを構築したいと考えています。最初のラウンドの後、ループは配列の 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 

前もって感謝します

4

2 に答える 2

6

このようなものをお探しですか?

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
于 2012-12-05T00:18:17.593 に答える
5

愛好家のための別のもの:

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
于 2012-12-05T02:30:18.710 に答える