rollapply
関数がデータを進行するにつれて、ウィンドウサイズを大きくするために(または他のR関数を)どのように使用するでしょうか。別の言い方をすれば、最初の適用は最初の要素で機能し、2番目は最初の2つの要素で機能し、3番目は最初の3つの要素で機能します。
質問する
894 次
3 に答える
4
min
、max
、sum
またはを適用しようとしている場合 prod
、これらの関数には、次のような累積的な対応物が既にあります。
cummin
、cummax
、cumsum
およびcumprod
拡大/拡大するウィンドウでよりエキゾチックな機能を適用するには、単純に使用できますsapply
例えば
# your vector of interest
x <- c(1,2,3,4,5)
sapply(seq_along(x), function(y,n) yourfunction(y[seq_len(n)]), y = x)
基本的な動物園のオブジェクトの場合
x.Date <- as.Date("2003-02-01") + c(1, 3, 7, 9, 14) - 1
x <- zoo(rnorm(5), x.Date)
# cumsum etc will work and return a zoo object
cs.zoo <- cumsum(x)
# convert back to zoo for the `sapply` solution
# here `sum`
foo.zoo <- zoo(sapply(seq_along(x), function(n,y) sum(y[seq_len(n)]), y= x), index(x))
identical(cs.zoo, foo.zoo)
## [1] TRUE
于 2013-01-11T04:10:44.730 に答える
2
のドキュメント?zooapply
をじっくり見てみると、これであなたが望むことを実行できるa
と思います。マトリックスはどこにあり、sum
任意の関数にすることができます。
a <- cbind(1:5,1:5)
# [,1] [,2]
# [1,] 1 1
# [2,] 2 2
# [3,] 3 3
# [4,] 4 4
# [5,] 5 5
rollapply(a,width=seq_len(nrow(a)),sum,align="right")
# [,1] [,2]
# [1,] 1 1
# [2,] 3 3
# [3,] 6 6
# [4,] 10 10
# [5,] 15 15
于 2013-01-11T04:16:46.210 に答える
0
@mnelの答えに加えて:
よりエキゾチックな機能については、単に sapply を使用できます
sapply
アプローチに時間がかかりすぎる場合は、関数を繰り返し定式化する方がよい場合があります。
于 2013-01-11T06:13:02.410 に答える