如何在R语言中从矩阵列表提取所有元素均为NaN的矩阵
提取列表中所有元素均为NaN的矩阵
你的问题出在判断逻辑上:is.nan(x)会返回和输入矩阵同维度的逻辑矩阵,而get_elem需要一个单个逻辑值来决定是否保留该列表元素。你需要用all()函数来检查矩阵的所有元素是否都是NaN。
方法1:使用collapse包的get_elem
修改判断函数,加上all()即可实现需求:
library(collapse) l1 <- list(matrix(NaN, nrow = 2, ncol = 2), matrix(1:4, nrow = 2, ncol = 2), matrix(NaN, nrow = 2, ncol = 2)) l2 <- get_elem(l1, function(x) all(is.nan(x)))
方法2:使用Base R的Filter函数
如果不想依赖第三方包,Base R原生的Filter函数也能完成相同操作:
l1 <- list(matrix(NaN, nrow = 2, ncol = 2), matrix(1:4, nrow = 2, ncol = 2), matrix(NaN, nrow = 2, ncol = 2)) l2 <- Filter(function(x) all(is.nan(x)), l1)
两种方法最终都会返回列表中所有元素全为NaN的矩阵(即示例中的第1和第3个矩阵)。
内容的提问来源于stack exchange,提问作者Debika Ghosh
相关产品推荐
相关产品推荐

