You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何R中x <- list()时is.null(x)返回FALSE,y <- c()时返回TRUE?

关于R中list()与NULL的疑问

先看这段R代码的运行结果:

x <- list()
is.null(x)
# [1] FALSE

y <- c()
is.null(y)
# [1] TRUE

问题:根据R中NULL的定义,若数据对象为NULL,则is.null()会返回TRUE,但为何x <- list()创建的对象调用is.null()返回FALSE?


原因解析

  • list()创建的是一个空列表对象,它的类型是list,只是内部没有元素、长度为0,但它本身是真实存在的对象,并不是NULL。
  • 而c()在不传入任何参数时,返回的就是NULL——你可以用str(y)验证,会直接显示NULL,所以is.null(y)自然返回TRUE。
  • 用typeof(x)查看x的类型,会得到list;用typeof(y)查看y的类型,结果是NULL,这就是两者最本质的区别。
  • 如果要判断一个列表是否为空(没有元素),可以用length(x) == 0,或者purrr包的is_empty(x);而is.null()的作用是专门判断对象是否是NULL这个特殊的“不存在值”。

内容的提问来源于stack exchange,提问作者Amandeep Singh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 21:42:42