如何检测向量

时间:2015-06-08 18:22:56

标签: r

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

如果我有下面的矢量并想知道第4个位置是否为空,我该怎么做

vx <- c(1, 2, 3, NULL, 5)
is.null(vx)
[1] FALSE

is.null()仅返回1个FAlSE和ID,以获取:

 FALSE FALSE FALSE TRUE FALSE

2 个答案:

答案 0 :(得分:9)

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

  

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

但是你的问题仍然可以提供有关列表的学习机会。它会出现在那里。如:

vlist <- list(1, 2, 3, NULL, 5)

尝试识别非常大的数据集中的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

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

答案 1 :(得分:0)

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