r - 检查 data.frame 列中的任何值是否为空

Jas*_*all 4 r dataframe

我想看看 data.frame 列是否有任何空值移动到下一个循环。我目前正在使用以下代码:

if (is.na(df[,relevant_column]) == TRUE ){next}
Run Code Online (Sandbox Code Playgroud)

发出警告:

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

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

r2e*_*ans 5

(我假设“null”是你真正的意思NA,因为 data.frameNULL在这个意义上不能包含。)

你的问题是if期望一个逻辑,但is.na(df[,relevant_column])返回一个逻辑向量any将逻辑向量减少为向量的单个全局“或”:尝试:

if (any(is.na(df[,relevant_column]))) {next}
Run Code Online (Sandbox Code Playgroud)

BTW:没== TRUE必要。如果您希望代码清晰,请保留它,但我认为您会发现大多数 R 代码并没有使用它。(我也看到something == FALSE,同样“奇怪/错误”,! something应该在哪里工作......但我离题了。)

  • (您可能会发现最好使用 `anyNA(...)` 而不是 `any(is.na(...))`。它们在功能上是等效的,但是 `anyNA` 可以明显更快,而且也许更多*可读*。) (4认同)