Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R if/while(条件){:参数长度为零时出错_R_R Faq - Fatal编程技术网

R if/while(条件){:参数长度为零时出错

R if/while(条件){:参数长度为零时出错,r,r-faq,R,R Faq,我收到了错误 Error in if (condition) { : argument is of length zero 或 是什么原因导致此错误消息,它是什么意思? 经进一步检查,该值似乎为NULL condition ## NULL 为了处理此错误,如何测试空值? 我希望这将返回TRUE,但我得到了一个空的逻辑值: condition == NULL ## logical(0) 请参见?NULL 您必须使用is.null 'is.null'的参数为'null'和'FALSE'时返回'

我收到了错误

Error in if (condition) { : argument is of length zero


是什么原因导致此错误消息,它是什么意思?

经进一步检查,该值似乎为
NULL

condition
## NULL
为了处理此错误,如何测试空值?

我希望这将返回
TRUE
,但我得到了一个空的逻辑值:

condition == NULL
## logical(0)
请参见
?NULL

您必须使用
is.null

'is.null'的参数为'null'和'FALSE'时返回'TRUE' 否则

试试这个:

if ( is.null(hic.data[[z]]) ) { print("is null")}

摘自本规范第2.1.6节

有一个称为NULL的特殊对象。每当需要指示或 指定不存在对象。不应将其与向量或零列表混淆 长度。 空对象没有类型,也没有可修改的属性。只有一个空对象 在R中,所有实例都引用了。要测试NULL,请使用is.NULL。不能设置属性 在NULL上


测试空值时,您希望使用
is.NULL(hic.data[[z]])

此错误消息的原因和含义是什么?

if
语句将单个逻辑值(从技术上讲是长度为1的逻辑向量)作为条件的输入

当输入条件的长度为零时,将引发错误。您可以使用,例如:

if (logical()) {}
## Error: argument is of length zero

if (NULL) {}
## Error: argument is of length zero    
l <- list(a = TRUE, b = FALSE, c = NA)
if(l$d) {}   
## Error in if (l$d) { : argument is of length zero

导致此错误的常见错误

使用
$
索引时,很容易意外导致此错误。例如:

if (logical()) {}
## Error: argument is of length zero

if (NULL) {}
## Error: argument is of length zero    
l <- list(a = TRUE, b = FALSE, c = NA)
if(l$d) {}   
## Error in if (l$d) { : argument is of length zero

如何测试这些值?

可以使用
is.null
测试值。有关更多详细信息,请参阅

要调用
if
safe,一个好的代码模式是:

if(!is.null(condition) && 
   length(condition) == 1 && 
   !is.na(condition) && 
   condition) {
  # do something
}

您可能还想从
assertive.code

查看使用
is.null
而不是
=
这是一个“好模式”的事实对R来说相当尴尬。