如何在 r 中修复:参数长度为零


使用 R 时可能遇到的错误消息是:

 Error in if (x < 10) {: argument is of length zero

当您尝试在 R 中的 if 语句中执行逻辑比较,但在比较中使用的变量长度为零时,通常会发生此错误。

零长度变量的两个示例是numeric()Character(0)

以下示例展示了如何在实践中解决此错误。

如何重现错误

假设我们在 R 中创建以下长度为零的数值变量:

 #create numeric variable with length of zero
x <- numeric()

现在假设我们尝试在if 语句中使用此变量

 #if x is less than 10, print x to console
if(x < 10 ) {
  x
}

Error in if (x < 10) {: argument is of length zero

我们收到错误,因为我们定义的变量长度为零。

如果我们只是创建一个具有实际值的数值变量,则在使用 if 语句时永远不会收到此错误:

 #create numeric variable
y <- 5

#if y is less than 10, print y to console
if(y < 10 ) {
  y
}

[1] 5

如何避免错误

为了避免零参数长度错误,我们需要包含一个isTRUE函数,它使用以下逻辑:

 is. logical (x) && length(x) == 1 && !is. na (x) && x

如果我们在 if 语句中使用此函数,则在将变量与值进行比较时不会收到错误:

 if(isTRUE(x) && x < 10 ) {
  x
}

我们没有收到错误,而是没有收到任何输出,因为isTRUE(x)函数的计算结果为FALSE ,这意味着 x 的值永远不会被打印。

其他资源

以下教程解释了如何修复 R 中的其他常见错误:

如何在 R 中修复:参数涉及不同的行数
如何修复 R:选择未使用的参数时出错
如何在 R 中修复:替换长度为零

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注