如何在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
相关产品推荐
相关产品推荐

