首页 > 解决方案 > 对于不同行组的R中的in函数

问题描述

我有以下 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循环的任何想法吗?谢谢!

标签: rloopsgrouping

解决方案


我们可以创建列表来存储不同的输出。创建一个步长为 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])
}

推荐阅读