如何检查数据框中某一列是否存在空值(null)?

5

我正在尝试查看数据框列是否有任何空值以继续下一个循环。 我目前使用以下代码:

if (is.na(df[,relevant_column]) == TRUE ){next}

出现了以下警告:

在 if (is.na(df_cell_client[, numerator]) == TRUE) { ... : 条件长度 > 1,只有第一个元素被使用

我该如何检查任何值是否为 null 而不仅仅是第一行?


3
使用 if (any(is.na(df[,relevant_column]))) {next}。没有 anyis.na(...) 返回一个逻辑向量,但是 if 需要进行单个比较;any 将其减少为单个逻辑值。==TRUE 是不必要的。 - r2evans
@r2evans,谢谢,它起作用了!如果您发布答案,我会选择它。 - Jason Melo Hall
1个回答

7
(我假设你所说的“null”实际上是指NA,因为数据框中不能包含那种意义上的null。)
你的问题在于if需要一个单一的逻辑值,但是is.na(df[,relevant_column])返回了一个逻辑向量。any将逻辑向量缩减为向量的全局“或”: 尝试使用以下代码:
if (any(is.na(df[,relevant_column]))) {next}

顺便说一下:== TRUE 是不必要的。如果你觉得这样能让代码更加清晰,可以保留它,但我认为大多数 R 代码并不使用它。(我也看到过something == FALSE同样“奇怪/错误”,其中! something应该可以工作...但我跑题了。)


4
您可能会发现使用anyNA(...)而不是any(is.na(...))更好。它们在功能上是等效的,但anyNA可能会更快,并且可能更易于阅读。 - r2evans

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接