R语言中扁平化布尔向量,实现全元素为TRUE时返回单布尔值的方法
判断布尔向量是否全为TRUE的R现成实现
base R 自带原生函数all()可直接满足需求,无需手写for循环,计算效率远高于手动循环实现。
匹配示例场景的实际用法
你提到的两个测试场景,直接将grepl()的输出结果传入all()即可得到目标单布尔值输出:
# 场景1:所有元素匹配ABC all(grepl("ABC", c("ABC","ABC","123ABC"))) # 输出: [1] TRUE # 场景2:存在不匹配ABC的元素 all(grepl("ABC", c("ABC","ABC","123ABA"))) # 输出: [1] FALSE
核心特性说明
- 判断逻辑完全匹配需求:仅当输入的布尔向量内所有元素均为TRUE时,函数返回单个标量
TRUE;只要向量内存在至少一个FALSE,就返回FALSE - 性能优势:
all()为底层C语言实现的向量化函数,没有R层面循环的语法开销,哪怕是百万级长度的向量也能瞬时完成计算,运行速度比手写for循环高2~3个数量级 - 灵活配置:如果待判断的布尔向量内存在缺失值
NA,默认all()会返回NA;可通过na.rm = TRUE参数跳过缺失值,仅针对有效非缺失值做全量判断,例如:all(c(TRUE, TRUE, NA), na.rm = TRUE) # 输出: [1] TRUE
内容的提问来源于stack exchange,提问作者cineS.
相关产品推荐
相关产品推荐

