根据R中的元素名称从列表中提取对象

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了根据R中的元素名称从列表中提取对象相关的知识,希望对你有一定的参考价值。

我有94个矩阵的列表,其子集显示在这里:

 > summary(full_matrix)

            Length Class  Mode   
 Alex_1         64 -none- numeric
 Alex_10      2500 -none- numeric
 Alex_11      2916 -none- numeric
 Alex_12     20736 -none- numeric
 Lily_1        441 -none- numeric
 Lily_10     57600 -none- numeric
 Lily_11     94249 -none- numeric
 Lily_12    167281 -none- numeric
 Lily_13    206116 -none- numeric
 Naima_1       169 -none- numeric
 Naima_10   209764 -none- numeric
 Naima_11   262144 -none- numeric
 Naima_12   209764 -none- numeric
 Naima_13   177241 -none- numeric
 Naima_14   143641 -none- numeric

我正在这些矩阵的每一个上运行一些代码,我可以使用lapply()成功地做到这一点。但是,代码运行非常缓慢,并且要花费数小时才能在完整列表上运行。所以我想按元素名称拆分列表。我已经成功地使用subset_matrix <- full_matrix[1:4]手动完成了此操作,在此示例中,该操作将给出:

 > summary(subset_matrix)
         Length Class  Mode   
 Alex_1     64  -none- numeric
 Alex_10  2500  -none- numeric
 Alex_11  2916  -none- numeric
 Alex_12 20736  -none- numeric

但是这很笨拙,如果我对脚本的前面部分进行任何更改,都会变得凌乱。我想做的是选择包含“ Alex _”,“ Lily _”,“ Naima_”等的所有元素,并创建这些元素的子列表。我以为this solution可能有用,但它给了我一个空列表:

 > matrix_alex <- full_matrix[c("Alex_")] # subset for individual infants
 > summary(matrix_alex)
      Length Class  Mode
  <NA> 0      -none- NULL
答案
"Alex_"不是您的列表中的名称。

names(full_list) # [1] "Alex_01" "Alex_02" "Alex_03" "Bella_01" "Bella_02" "Bella_03"

您可能想使用grep查找图案。

full_list[grep("Alex_", names(full_list))] # $Alex_01 # [,1] # [1,] NA # # $Alex_02 # [,1] # [1,] NA # # $Alex_03 # [,1] # [1,] NA


数据:

full_list <- list(Alex_01=matrix(), Alex_02=matrix(), Alex_03=matrix(), Bella_01=matrix(), Bella_02=matrix(), Bella_03=matrix())

以上是关于根据R中的元素名称从列表中提取对象的主要内容,如果未能解决你的问题,请参考以下文章

根据名称将列表元素替换为另一个列表元素

使用R中的稀疏矩阵从矢量中提取元素,而不转换为密集矩阵

R:根据列表元素名称创建新的数据框变量

从列表中提取值以将它们分配为 R 中的新变量

根据自定义对象属性从数组列表中删除元素

在R中,从列表中的文件夹中读取文件,并按文件名(无文件格式)分配列表元素名称(.fa)