如何使用Lappy计算R中数据集中缺失值的数量?

如何使用Lappy计算R中数据集中缺失值的数量?,r,dplyr,lapply,R,Dplyr,Lapply,我在R中有一个名为NIS_数据的数据集。我尝试使用以下代码计算每个变量缺少值的数量: attach(NIS_data) lapply(colnames(NIS_data), function(var) {sum(is.na(var))}) 我在这段代码背后的推理是colnames(NIS_数据)返回一个向量;然后,我的函数将汇总每个变量缺少的值的数量。但是,R返回一个长度为9的列表,其中列表中的每个元素的值为1。我知道这是不正确的(每个变量都有一个遗漏的观察值)。非常感谢您的帮助。使用数据而不

我在R中有一个名为NIS_数据的数据集。我尝试使用以下代码计算每个变量缺少值的数量:

attach(NIS_data)
lapply(colnames(NIS_data), function(var) {sum(is.na(var))})

我在这段代码背后的推理是colnames(NIS_数据)返回一个向量;然后,我的函数将汇总每个变量缺少的值的数量。但是,R返回一个长度为9的列表,其中列表中的每个元素的值为1。我知道这是不正确的(每个变量都有一个遗漏的观察值)。非常感谢您的帮助。

使用数据而不是列名:
lappy(NIS_数据,函数(var){sum(is.na(var))}
。您可以通过
colSums(is.na(NIS_data))
更简单地做同样的事情。谢谢!这很有效。你能解释一下为什么我应该使用数据集而不是列名吗?
lappy()
对传递给它的每个元素执行一个函数。在您的尝试中,它检查列名本身是否是
NA
,而不是数据。您可以使用
sapply(colnames(NIS_data)、function(var)sum(is.na(NIS_data[var]))
通过使用列名对数据进行子集设置来获得相同的结果,但在这种情况下没有任何优势。这很有意义-谢谢。仅供参考,您不必使用
lappy
。只要
sum(is.na(NIS_数据))
就可以了。