首页 > 解决方案 > 对数据帧列表进行矢量化索引 R

问题描述

我在 R 中有一个超过 100 个大规模矩阵的列表。

我将使用一个名为的小示例列表对象list_matrices

list(structure(c(1, 2, 3, 4, 2, 3, 3, 4), .Dim = c(4L, 2L), .Dimnames = list(
    NULL, c("x", "y"))), structure(c(1, 2, 3, 4, 2, 2, 3, 4), .Dim = c(4L, 
2L), .Dimnames = list(NULL, c("a", "b"))))

矩阵 1 应该是对象x,矩阵 2 应该是对象a

我试图索引列表中的每个矩阵,以便如果行中第 1 列的值和第 2 列的值匹配,则该行从矩阵中索引出来,该矩阵仍然存储为list_matrices对象内部的自己的矩阵。基本上我想要这样的东西

mat_tf<- <-mat[(mat[,1]!=mat[,2],]

但是在列表中的每个矩阵上

我还想在每个矩阵对象上添加一个_tf附加的新名称,这样当我打电话时,list_matrices[[1]]我会得到一个名为的矩阵x_tf

显然 for 循环不是一个聪明的主意,所以我试图寻找方法来矢量化该过程。有没有人有什么建议?

标签: rlistmatrixvectorization

解决方案


lapply(list_matrices, function(mat) mat[mat[,1] != mat[,2],])

names然后,您可以根据需要使用该功能命名您的列表。


推荐阅读