if语句中的逻辑(0) [英] logical(0) in if statement

查看:175
本文介绍了if语句中的逻辑(0)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

此行:

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)

Why there is an error? What is logical(0)

推荐答案

logical(0)是长度为0的逻辑基本类型的向量.之所以得到这个,是因为您问这个向量的哪些元素等于0:

logical(0) is a vector of base type logical with 0 length. You're getting this because your asking which elements of this vector equal 0:

> !is.na(c(NA, NA, NA))
[1] FALSE FALSE FALSE
> which(!is.na(c(NA, NA, NA))) == 0
logical(0)

在下一行中,您要询问零长度向量logical(0)是否等于0,但不是.因为无法将长度为0的向量与标量进行比较,所以会出现错误.

In the next line, you're asking if that zero length vector logical(0) is equal to 0, which it isn't. You're getting an error because you can't compare a vector of 0 length with a scalar.

您可以检查第一个向量的长度是否为0:

Instead you could check whether the length of that first vector is 0:

if(length(which(!is.na(c(NA,NA,NA)))) == 0){print('TRUE')}

这篇关于if语句中的逻辑(0)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆