0

私は比較的 R に慣れていませんが、単純な R プログラミングはかなりの量行っています。これは簡単な質問だと思いますが、理解できないようです。

更新しました:

コンピューターのメモリの制約により、回帰分析のためにデータを断片化する必要がある状況です。基本的に、X (nxk)、y (nx 1)、および Om (nxn) と呼ばれる適切な 3 つの行列があります。これらの 3 つの行列を行ごとに分割し、それらをさまざまな方法で掛け合わせ、結果を合計する必要があります。Om のエラー構造のため、一部のグループは 3 行、他のグループは 2 行、他のグループは 1 行になります。3 つのグループの場合、次のようになります。

Xi (3 xk)、yi (3 x 1)、Om3 (3 x 3)

Om1、Om2、および Om3 は既に R でビルドされています

Om1<-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、および Om の行を一致させるために、X と y をどのように分割できるかです。ループが必要だと思っていましたが、次のように機能させることはできません。

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 および近江アクロスアイズ

徹底しようとする長い投稿で申し訳ありません。アドバイスをいただければ幸いです。

4

1 に答える 1

1

この行列の名前が であると仮定するとmtx、行数が増加する行列が 10 個必要であり、反復ごとに 1 ずつ増加する長さの合計が n(n+1)/2 であるため、少なくとも 55 行あるとします。

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) , ]
于 2013-01-21T18:42:18.977 に答える