【发布时间】:2018-07-15 12:33:12
【问题描述】:
这一行:
which(!is.na(c(NA,NA,NA))) == 0
产生logical(0)
这一行
if(which(!is.na(c(NA,NA,NA))) == 0){print('TRUE')}
生成:
Error in if (which(!is.na(c(NA, NA, NA))) == 0) { :
argument is of length zero
为什么会出现错误?什么是逻辑(0)
【问题讨论】:
-
一个长度为 0 的逻辑(即布尔)向量。由于它的长度为零,它没有真值,所以
if子句失败。 -
你可以这样做:
if(any(!is.na(c(NA,NA,NA))) == 0){print('TRUE')} -
如果您将
which替换为sum,您将获得预期的行为,即if(sum(!is.na(c(NA,NA,NA))) == 0){print('TRUE')}
标签: r if-statement na