R语言统计数据框各列NULL值数量时出现报错如何解决
R统计数据框各列NULL值数量的解决方案
报错原因
is.null() 是判断单个完整对象是否为NULL的函数,直接对整个数据框调用is.null(df)时,只会返回单个逻辑值(正常数据框会返回FALSE),无法返回和数据框维度匹配的逻辑矩阵,自然不符合colSums对输入至少二维的要求,因此触发报错。
核心概念澄清
R中NULL和NA是完全不同的对象:
NA是长度为1的缺失值占位符,用于表示单个观测的缺失,可以存在于普通原子向量(也就是常规数据框的列)中NULL是长度为0的空对象,代表对象本身不存在,常规原子向量中插入NULL会被自动移除,只有列表类型(包括数据框的列表列)可以存储NULL元素
绝大多数常规数据框的缺失值都是NA,直接使用colSums(is.na(df))统计即可,不需要用到is.null。
列表列的NULL统计方案
如果你的数据框包含列表列,需要统计每列中NULL元素的数量,可以用逐列遍历的方式实现:
基础包实现
sapply(df, function(col) sum(sapply(col, is.null)))
dplyr实现
library(dplyr) summarise(df, across(everything(), ~ sum(sapply(.x, is.null))))
内容的提问来源于stack exchange,提问作者Fading Captain
相关产品推荐
相关产品推荐

