根据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中的元素名称从列表中提取对象的主要内容,如果未能解决你的问题,请参考以下文章