如何检测向量中的空值

use*_*875 8 r

什么是检测向量中空值的最佳方法?

如果我有下面的向量,并想知道第四个位置是null,我该怎么做

vx <- c(1, 2, 3, NULL, 5)
is.null(vx)
[1] FALSE
Run Code Online (Sandbox Code Playgroud)

is.null()只返回1个FAlSE和ID,如:

 FALSE FALSE FALSE TRUE FALSE
Run Code Online (Sandbox Code Playgroud)

Pie*_*une 12

如评论中所述,NULL不会出现length(vx).对于未定义的值,它是R中的特殊对象.来自CRAN文档:

NULL表示R中的空对象:它是保留字.NULL通常由值未定义的表达式和函数返回.

但是你的问题仍然可以在列表方面获得学习机会.它会出现在那里.如:

vlist <- list(1, 2, 3, NULL, 5)
Run Code Online (Sandbox Code Playgroud)

尝试识别NULL非常大的数据集中的值对于新手R用户来说可能是棘手的.有不同的技术,但这里有一个在我需要的时候适合我.

!unlist(lapply(vlist, is.numeric))
[1] FALSE FALSE FALSE  TRUE FALSE

#or as user Kara Woo added. Much better than my convoluted code
sapply(vlist, is.null)
[1] FALSE FALSE FALSE  TRUE FALSE

#suggestion by @Roland
vapply(vlist, is.null, TRUE)
[1] FALSE FALSE FALSE  TRUE FALSE
Run Code Online (Sandbox Code Playgroud)

如果有字符,则替换in is.character或任何类适用.

  • 有理由做`!unlist(lapply(vlist,is.numeric))`而不是`sapply(vlist,is.null)`吗?如果列表项包含字符,数字等,则前者可能会变得复杂。 (2认同)

Jos*_*ook 6

有人(像我一样)可能会来寻找is.null(),真的需要is.na(). 如果是这样,请提醒自己(就像我所做的那样)R 既有 aNULL又有NA对象。NULL表示没有值,而NA表示值未知。如果您正在寻找值向量中的缺失值,那么您可能想要的是is.na().