R语言if条件中的logical(0)numeric(0)问题,判断长度不能为零

首先区分两者

logical(0) 不等于 numeric(0)。两者都不等于NULL值,即is.null(logical(0))和is.null(numeric(0))返还值都是FALSE。这很有意思,说明长度为零的值有时却不会别算为空值,但空值的定义却是函数中没有被赋值的参数,特征就是没有值。假如用is.logical判断NA的逻辑值,得到的结果是TRUE。NA可以为正无穷或负无穷,但NULL永远代表的是没有这个值,一个空集的概念。

NULL还有一个问题,就是如果用if-else循环,if(条件)的条件中的假如出现变量被“赋值”是NULL,numeric(0),还是logical(0),就会出现error message说条件中赋值长度不能为零。

所以常用比较 < > ==都不能使用,我突然想到用匹配可不可以

> x = NULL
> x %in% "uw"
# logical(0)

很不幸,这样不行;但是直觉告诉我事情并不那么简单,于是:

> "uw" %in% x
[1] FALSE

哈哈哈,可以返回逻辑值了!!

原函数:

if (is.null(weight.type) | "uw" %in% weight.type) {
    .
    .
    .
 }else{
    .
    .
    .
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值