Я думаю, что медлительность связана с тем, что вы не выделили память для b
перед запуском l oop, а также R использует векторизованные операции и, следовательно, i
l oop не требуется:
system.time({
b <- matrix(0, nrow(a), ncol(a))
b[,1] <- a[,1]
for(j in 2:ncol(a)){
b[,j] <- ((1+a[,j])^j/(1+b[,j-1]))-1
}
})
# user system elapsed
# 0 0 0
данные:
#R-3.6.1 64bit Win10
set.seed(0L)
nr <- 2298L
nc <- 30L
library(xts)
a <- xts(matrix(rnorm(nr*nc), nr, nc), seq(Sys.Date()-nr, by="1 day", length.out=nr))