在R中优化xts格式的循环速度
我有一个数据结构为xts,如下所示: 维度为2298行30列。 我想在每一行和每一列中做一个循环,并将其存储在一个新的矩阵/数据帧中。将xts数据视为变量a,示例代码为:在R中优化xts格式的循环速度,r,performance,loops,for-loop,R,Performance,Loops,For Loop,我有一个数据结构为xts,如下所示: 维度为2298行30列。 我想在每一行和每一列中做一个循环,并将其存储在一个新的矩阵/数据帧中。将xts数据视为变量a,示例代码为: for(i in 1:nrow(a)){ b[i,1] <- a[i,1] for(j in 2:ncol(a)){ b[i,j] <- ((1+a[i,j])^j/(1+b[i,j-1]))-1 } } for(1中的i:nrow(a)){ b[i,1]我认为慢是因为在运行循环之前,您没有为b
for(i in 1:nrow(a)){
b[i,1] <- a[i,1]
for(j in 2:ncol(a)){
b[i,j] <- ((1+a[i,j])^j/(1+b[i,j-1]))-1
}
}
for(1中的i:nrow(a)){
b[i,1]我认为慢是因为在运行循环之前,您没有为b
分配内存,并且R使用矢量化操作,因此不需要i
循环:
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
system.time({
b试试这个;ta
#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))