標準偏差を見つけるのに似た機能を実行していますが、実行に時間がかかります。
標準偏差の累積値を計算する関数、つまり 1 日目から n 日目までの標準偏差タイプの関数を使用する予定です。
ただし、計算に時間がかかるため、これをクラスターで実行したいと考えました。
そのため、クラスターの各ノードがほぼ同時に終了するように、データを分割したかったのです。たとえば、私の機能が次のようなものである場合、単一マシンの方法は次のように機能します。
vec <- xts(rnorm(1000),Sys.Date()-(1:1000)
lapply(1:length(vec), function(x){
Sys.sleep(30)
sd(as.numeric(vec[1:x]))
}
(NB sys.sleep は、カスタム関数の処理にかかる余分な時間を表すためにそこに追加されます)
ただし、これを 1 台ではなく 2 台のマシンに分割したいとしましょう。各マシンにマシン 1 とマシン 21:length(vec)
のリストを与えて 、両方のマシンが時間どおりに終了するように、ベクトルを分割するにはどうすればよいでしょうか。つまり、両方のプロセスがほぼ同時に完了するような y の値はどうなるでしょうか...そして、10 台のマシンでそれを行うとしたらどうなるでしょうか...そのための元のベクトルのブレークを見つけるにはどうすればよいでしょうか?働くために...c(1:y)
c((y+1):length(vec))
c(1:length(vec))
つまり、私は持っているだろう
y <- 750 # This is just a guess as to potentially where it might be.
vec <- xts(rnorm(1000),Sys.Date()-(1:1000)
# on machine 1 I would have
lapply(1:y, function(x){
Sys.sleep(30)
sd(as.numeric(vec[1:x]))
}
# and on machine 2 I would have
lapply(y+1:length(vec), function(x){
Sys.sleep(30)
sd(as.numeric(vec[1:x]))
}