1

次のように、105 個の行列を含むリストを作成しました。

m<-vector("list",105)
for (i in 2:105) {
    m[[i-1]]<-Datos[(x[i-1]+1):x[i],1:14] }
m[[105]]<-Datos[(x[105]+1):533195,1:14]

たとえば、私の行列番号 104 の一部が返されます (列内):

m[[104]]

    ID:                    
     8866 
     8866 
     8866 
     8866 
     8866 
     8866 
     8866 
     8866

  Date: 
     1990-4-15 
     1990-4-16
     1990-4-17
     1990-4-18
     1990-4-15
     1990-4-16
     1990-4-17
     1990-4-18

    Series: 
        APV 
        APV 
        APV 
        APV 
        INV 
        INV 
        INV 
        INV

これらは、マトリックスの私の列の一部です。私が望むのは、シリーズの列を使用してこのマトリックスを分割することです。シリーズの数に応じたリストのリストのようなものになると思います。この場合、2 つあります: APV and INV(各マトリックスのシリーズの名前がわからないことに注意してください。そのため、一意の異なるシリーズを抽出する関数が必要です)

要約すると、私はそれを望みます:

m[[104]][[1]] returns:

        ID:                    
         8866 
         8866 
         8866 
         8866 


      Date: 
         1990-4-15 
         1990-4-16
         1990-4-17
         1990-4-18


        Series: 
            APV 
            APV 
            APV 
            APV 



And m[[104]][[2]] returns:

        ID:                    
         8866 
         8866 
         8866 
         8866 


      Date: 
         1990-4-15 
         1990-4-16
         1990-4-17
         1990-4-18


        Series: 

            INV 
            INV 
            INV 
            INV

または、これを行うためのより効率的な方法を考え出すかもしれません。

PD: 列を同じレベルに配置する方法がわかりませんでした

4

1 に答える 1

0

これを試して:

library(plyr)
lapply(m, dlply, "Series")

また:

lapply(m , function(x)split(x, x$Series))
于 2012-10-05T02:02:45.927 に答える