对于不同行组的 R 函数
For in function in R for different groups of rows
我有以下 R 对象:
y <- sample(c(0,2,2),1000,replace=T)
X <- matrix(runif(2000,0,2),ncol=2,byrow=T)*2
XX = t(X)%*%X
XY = as.numeric(t(X)%*%y)
YY = as.numeric(t(y)%*%y)
我怎样才能运行它得到几个用前 10 行计算的 XX、XY 和 YY 对象,其他的用第 11 到 20 行等...?关于 for in 循环的任何想法?
谢谢!
我们可以创建列表来存储不同的输出。创建一个步长为 10 的序列,并在 for
循环中计算结果。
len <- length(y)/10
XX_list <- vector('list', len)
XY_list <- vector('list', len)
YY_list <- vector('list', len)
vals <- seq(1, length(y), 10)
for(i in seq_along(vals)) {
inds <- vals[i]:(vals[i] + 9)
XX_list[[i]] <- t(X[inds, ]) %*% X[inds, ]
XY_list[[i]] = as.numeric(t(X[inds, ])%*% y[inds])
YY_list[[i]] = as.numeric(t(y[inds])%*% y[inds])
}
我有以下 R 对象:
y <- sample(c(0,2,2),1000,replace=T)
X <- matrix(runif(2000,0,2),ncol=2,byrow=T)*2
XX = t(X)%*%X
XY = as.numeric(t(X)%*%y)
YY = as.numeric(t(y)%*%y)
我怎样才能运行它得到几个用前 10 行计算的 XX、XY 和 YY 对象,其他的用第 11 到 20 行等...?关于 for in 循环的任何想法? 谢谢!
我们可以创建列表来存储不同的输出。创建一个步长为 10 的序列,并在 for
循环中计算结果。
len <- length(y)/10
XX_list <- vector('list', len)
XY_list <- vector('list', len)
YY_list <- vector('list', len)
vals <- seq(1, length(y), 10)
for(i in seq_along(vals)) {
inds <- vals[i]:(vals[i] + 9)
XX_list[[i]] <- t(X[inds, ]) %*% X[inds, ]
XY_list[[i]] = as.numeric(t(X[inds, ])%*% y[inds])
YY_list[[i]] = as.numeric(t(y[inds])%*% y[inds])
}