如何在 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 中的其他常见错误: