【问题标题】:r - Check if any value in a data.frame column is nullr - 检查 data.frame 列中的任何值是否为空
【发布时间】:2017-02-01 00:05:13
【问题描述】:

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

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

发出警告:

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

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

【问题讨论】:

  • 使用if (any(is.na(df[,relevant_column]))) {next}。如果没有anyis.na(...) 将返回逻辑的向量,但if 需要一个比较; any 将其简化为单个逻辑。 ==TRUE 是不必要的。
  • @r2evans,谢谢它的工作!如果您发布答案,我会选择它。

标签: r dataframe


【解决方案1】:

(我假设“null”实际上是指NA,因为在这个意义上,data.frame 不能包含NULL。)

您的问题是 if 需要一个逻辑,但 is.na(df[,relevant_column]) 返回一个逻辑的向量any 将逻辑向量简化为向量的单个全局“或”: 试试:

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

顺便说一句:== TRUE 是不必要的。如果您觉得您希望代码清晰明了,请保留它,但我认为您会发现大多数 R 代码不使用它。 (我也见过something == FALSE,同样“奇怪/错误”,! something 应该可以工作......但我离题了。)

【讨论】:

  • (您可能会发现使用anyNA(...) 而不是any(is.na(...)) 更可取。它们在功能上是等效的,但anyNA 可以明显更快,而且它可能更可读 i>.)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-02-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-11
  • 1970-01-01
  • 2011-12-31
相关资源
最近更新 更多