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

R语言编写返回向量最大元素对应布尔值的自定义函数

R实现逐元素判断是否为向量最大值的布尔函数

核心逻辑直接利用R的向量化运算特性:将输入向量的每个元素和向量本身的最大值做相等比较,就能直接返回等长的布尔值序列,不需要额外调用which.max()做索引转换。

函数实现代码

maxBoolFunct <- function(vec) {
  # 空向量边界处理,返回等长空逻辑向量
  if (length(vec) == 0) return(logical(0))
  vec == max(vec)
}

参数说明

  • 默认遵循R基础函数的原生行为:如果向量中存在NA值,max()会返回NA,最终对应位置的判断结果也会是NA
  • 如果需要跳过缺失值计算最大值,把代码里的max(vec)改成max(vec, na.rm = TRUE)即可,此时NA位置的判断结果会返回FALSE

效果测试

用给出的示例运行验证:

vec <- c(3,4,1,5)
maxBoolFunct(vec)
#> [1] FALSE FALSE FALSE  TRUE

额外特性

和which.max()只能返回第一个最大值的位置不同,这个实现如果遇到多个并列最大值的情况,会把所有最大值的位置都标记为TRUE,比如:

maxBoolFunct(c(5, 2, 5, 3))
#> [1]  TRUE FALSE  TRUE FALSE

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 09:39:40