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

R语言函数求助:Assayperc超标值识别函数逻辑错误排查

问题修正方案

原函数的核心错误

原is_oos函数逻辑完全混乱:

  • 错误引用全局变量data$Assayperc,没有使用传入的参数x,导致判断逻辑和当前处理的行无关
  • 误用&&(仅支持单个值的逻辑判断),向量运算应使用|;同时条件写反——你要找的是小于0.9 或 大于1.1的数值,而非同时满足这两个不可能的条件
  • 外层的x < (...)完全多余,最终判断变成x < FALSE(即x < 0),只要Assayperc是正数就会返回TRUE,所以所有值都被标记为超标

修正后的实现方式

方式1:修正is_oos函数

is_oos <- function(x){
  # 判断x是否小于0.9 或 大于1.1
  return(x < 0.9 | x > 1.1)
}

方式2:直接在mutate中写逻辑(更简洁,无需单独函数)

如果不需要复用判断逻辑,直接把条件写在ifelse里更直观:

data <- data %>%
  group_by(Manufacturer) %>%
  mutate(OutOfSpec = ifelse(Assayperc < 0.9 | Assayperc > 1.1, BatchNumber, ""))

正确调用示例

用修正后的函数调用:

data <- data %>%
  group_by(Manufacturer) %>%
  mutate(OutOfSpec = ifelse(is_oos(Assayperc), BatchNumber, ""))

注:这里的group_by(Manufacturer)不影响超标判断(每个样本的超标是独立判定的),如果不需要分组操作可以直接去掉,保留也不会影响结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 12:15:39