cumsum
R の関数を利用する同様のコードが既に実装されていますsome.step.function
。
コンパイラ パッケージを使用する以外に、速度を大幅に改善するためのアドバイスはありますか? ありがとうございました!
genIPCWNumDenom <- function(data, some.step.function){
#data is a data.frame
#some.step.function is a function
n <- d <- array(0, dim = c(nrow(data),1))
for (i in 1:nrow(data)){
n.tmp <- d.tmp <- 0
for (j in i:nrow(data)){
wt <- some.step.function(data$X[j] + data$err[i])
n.tmp <- n.tmp + data$Y[j] / wt
d.tmp <- d.tmp + 1 / wt
}
n[i] <- n.tmp
d[i] <- d.tmp
}
data$N.wt <- n
data$D.wt <- d
data
}
編集:これまでの助けに感謝します。内側のループを削除すると、コードが実行可能になりました。さらなるスピードアップに期待したい。現在、私のループは次のとおりです。
for (i in 1:nrow(data)){
err.i <- data$err[i]
wt <- some.step.func(data$X[i:nrow(data)] + err.i)
n[i] <- sum(data$Y[i:nrow(data)] / wt)
d[i] <- sum(1 / wt)
}