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 回答