我是R的新手,虽然我做了很多简单的R编程。我认为这应该是一个简单的问题,但我似乎无法弄明白。
更新:
由于我的计算机存在内存限制,我需要将数据分段以进行回归分析。我基本上有三个相关的矩阵称为X(n x k),y(n x 1)和Om(n x n)我需要将这三个矩阵按行以各种方式将它们相乘,然后将结果相加。由于Om的错误结构,一些组必须是3行,其他行为2,其他行为1.对于一组3,我们将有:
Xi(3 x k),yi(3 x 1)和Om 3(3 x 3)
我已经在R
中构建了Om1,Om2和Om3Om1<-matrix(2)
vec1<-c(2,-1)
vec2<-c(-1,2)
Om2<-rbind(vec1,vec2)
vec3<-c(2,-1,0)
vec4<-c(-1,2,-1)
vec5<-c(0,-1,2)
Om3<-rbind(vec3,vec4, vec5)
现在问题是如何分解X和y以便我可以匹配X,y和Om的行。我以为我需要一个循环,但不能让它像以下那样工作:
for(i in 1:280){
assign(paste("xh", i, sep = ""), i)
}
for(i in 1:145){
xhi<- X[i,]
}
for(i in 146:195){
xhi<-X[ seq( from=i , length=2) , ]
}
for(i in 196:280){
xhi<-X[ seq( from=(i+49) , length=3) , ]
}
如果第一个145 xi对应于Om1,那么下一个50 xi对应于Om2 ......我想我需要一种方法来索引它们,这与我最终需要总结一个xi的产品相同,yi和Omi穿过我的
对于试图彻底的长篇文章感到抱歉,任何建议都将不胜感激
答案 0 :(得分:1)
假设这个矩阵名为mtx
,你想要10个增加行数的矩阵,并且它至少有55行,因为每次迭代增长1的长度之和为n(n 1)/ 2:
mlist <- list()
for (x in 1:10) mlist[[x]] <-mtx[ seq( from=x*(x-1)/2+1 , length=x) , ]
如果愿意像卡尔所说的那样:
mlist <- list()
for (x in 1:10) mlist[[x]] <-mtx[ seq( from=1 , length=x) , ]
或者:
mlist <- list()
for (x in 1:10) mlist[[x]] <-mtx[ seq( from=x , length=2) , ]