R语言apply嵌套多函数:统计mtcars类数据集缺失值的简化写法
R语言统计数据集各列缺失值数量的简化实现
错误写法原因说明
你尝试的z <- apply(mtcars, 2, sum(is.na))语法不成立,核心原因是apply的第三个参数需要传入可对每一列切片执行的函数对象,而sum(is.na)是直接对is.na函数本身执行求和操作,完全没有绑定到数据集的列维度计算,运行会直接报错。
正确嵌套调用写法
你可以通过匿名函数包装两个函数的调用逻辑,实现单次apply完成计算,和你原来分两步执行的逻辑完全一致:
z <- apply(mtcars, 2, function(col) sum(is.na(col)))
更高效的原生简化方案
针对列维度的求和运算,R原生提供了更简洁高效的colSums函数,不需要调用apply就能直接实现需求,大数据集下性能优势更明显:
z <- colSums(is.na(mtcars))
扩展:纯函数组合写法
如果你偏好无匿名函数的组合式写法,可以加载purrr包用compose函数拼接两个调用逻辑:
library(purrr) z <- apply(mtcars, 2, compose(sum, is.na))
内容的提问来源于stack exchange,提问作者Englishman Bob
相关产品推荐
相关产品推荐

