ric*_*rdo 5 for-loop r apply xts
我经常以xts格式处理数据,并且经常必须缩放它们(比如在某个日期等于100).我目前做到这一点使用的功能,其作品使用for-loop-然而,这似乎不是很实用.
这是我现在的表现:
df1 <- data.frame(rnorm(100), runif(100), 1:100*rnorm(100))
dfx <- xts(df1, order.by = seq(as.Date("2001-01-01"), by='mon', length.out=100))
dfxColScl <- function(dfrm, pos=1, idx = 100)
{
scaledDF <- dfrm
for (i in 1:ncol(dfrm)) {
scaledDF[, i] <- dfrm[,i] / as.numeric(dfrm[pos, i]) * idx
}
return(scaledDF)
}
Run Code Online (Sandbox Code Playgroud)
是否有一些聪明的apply类型函数是R这样做的?
sweep可用于将矩阵除以行。
dfx.scaled2 <- sweep(100*dfx, 2, dfx[1], "/")
all.equal(dfx.scaled, dfx.scaled2) # same result as @Joshua
#[1] TRUE
Run Code Online (Sandbox Code Playgroud)