我收到了错误
Error in if (condition) { : argument is of length zero
Run Code Online (Sandbox Code Playgroud)
要么
Error in while (condition) { : argument is of length zero
Run Code Online (Sandbox Code Playgroud)
是什么导致此错误消息,这是什么意思?
在进一步检查时,似乎价值是NULL.
condition
## NULL
Run Code Online (Sandbox Code Playgroud)
为了处理这个错误,我该如何测试NULL值?
我希望这会返回TRUE,但我得到一个空的逻辑值:
condition == NULL
## logical(0)
Run Code Online (Sandbox Code Playgroud)
GSe*_*See 38
看到 ?NULL
你必须使用 is.null
'is.null'如果参数为'NULL'则返回'TRUE',否则返回'FALSE'.
试试这个:
if ( is.null(hic.data[[z]]) ) { print("is null")}
Run Code Online (Sandbox Code Playgroud)
从R语言定义的 2.1.6节
有一个名为NULL的特殊对象.只要需要指示或指定对象不存在,就会使用它.它不应与矢量或零长度列表混淆.NULL对象没有类型,也没有可修改的属性.R中只有一个NULL对象,所有实例都引用该对象.要测试NULL,请使用is.null.您不能在NULL上设置属性.
Ric*_*ton 16
是什么导致此错误消息,这是什么意思?
if 语句采用单个逻辑值(技术上是长度为1的逻辑向量)作为条件的输入.
输入条件长度为零时抛出错误.你可以用它来重现它,例如:
if (logical()) {}
## Error: argument is of length zero
if (NULL) {}
## Error: argument is of length zero
Run Code Online (Sandbox Code Playgroud)
导致此错误的常见错误
使用$索引时很容易意外地导致此错误.例如:
l <- list(a = TRUE, b = FALSE, c = NA)
if(l$d) {}
## Error in if (l$d) { : argument is of length zero
Run Code Online (Sandbox Code Playgroud)
同时使用if- else当你的意思ifelse,或覆盖T和F.
请注意以下其他不良情况的相关错误和警告:
if/while(condition)中的错误{:缺少需要TRUE/FALSE的值
if/while(condition)出错:参数不能解释为逻辑
if (NA) {}
## Error: missing value where TRUE/FALSE needed
if ("not logical") {}
## Error: argument is not interpretable as logical
if (c(TRUE, FALSE)) {}
## Warning message:
## the condition has length > 1 and only the first element will be used
Run Code Online (Sandbox Code Playgroud)
我如何测试这些值?
NULL值可以测试使用is.null.有关更多详细信息,请参阅GSee的答案.
为了使您的电话if安全,一个好的代码模式是:
if(!is.null(condition) &&
length(condition) == 1 &&
!is.na(condition) &&
condition) {
# do something
}
Run Code Online (Sandbox Code Playgroud)
你也可以想看看assert_is_if_condition从assertive.code.
| 归档时间: |
|
| 查看次数: |
69544 次 |
| 最近记录: |