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

如何在R语言中检查列表的所有元素是否为整数?含具体列表示例的批量检查方法

嘿,很高兴能帮你解决这两个关于R语言列表元素检查的问题!下面我分情况给你详细说明:

问题1:如何在R语言中检查一个列表的所有元素是否均为整数?

在R里要注意区分两种"整数"的场景,对应的检查方法也不一样:

  • 场景1:检查元素的「数据类型」是否为整数(R中的integer类型,定义时需要加L后缀,比如10L)
  • 场景2:检查元素的「数值」是否为整数(即使元素是numeric类型,比如10这种值为整数的数值)

场景1:检查数据类型是否为整数

用基础R的sapply结合all就能实现:

# 示例列表:元素都是integer类型
my_list <- list(1L, 2L, 3L)
# 检查所有元素类型是否为整数
all(sapply(my_list, is.integer))
# 输出 TRUE

如果习惯用purrr包,代码会更简洁直观:

library(purrr)
every(my_list, is.integer)
# 输出 TRUE

场景2:检查数值是否为整数

这种情况需要自定义一个函数,来判断数值是否等于其取整后的值,同时兼顾非数值元素的情况:

# 示例列表:元素是numeric类型,但值都是整数
my_list <- list(10, 20, 30.0)

# 定义检查整数值的函数
is_whole_number <- function(x) {
  # 先判断是数值型,且是单个值,再检查是否等于取整后的值
  is.numeric(x) && length(x) == 1 && x == as.integer(x)
}

# 检查所有元素是否为整数值
all(sapply(my_list, is_whole_number))
# 输出 TRUE
问题2:检查指定列表的所有元素是否均为整数

针对你给出的List_example <- list('short'= 10,'medium'= 20,'long'=200),先明确:这个列表里的元素都是numeric类型,但数值都是整数。下面分两种需求给出方案:

需求1:检查数值是否为整数

直接用上面定义的is_whole_number函数即可:

List_example <- list('short'= 10,'medium'= 20,'long'=200)

is_whole_number <- function(x) {
  is.numeric(x) && length(x) == 1 && x == as.integer(x)
}

# 一次性检查所有元素
all(sapply(List_example, is_whole_number))
# 输出 TRUE

需求2:检查元素类型是否为integer

当前列表的元素是numeric,所以直接检查会返回FALSE:

all(sapply(List_example, is.integer))
# 输出 FALSE

如果想要将元素转换为integer类型后再验证,可以这样做:

# 将列表元素转为integer类型
List_example_int <- lapply(List_example, as.integer)
# 再次检查类型
all(sapply(List_example_int, is.integer))
# 输出 TRUE

内容的提问来源于stack exchange,提问作者Hispalis Guadal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 15:52:42