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

R语言如何通过if else与sapply函数检查两列数值的大小关系

R代码问题排查与修正

错误原因

  • 函数调用错误:sapply() 仅支持对单个向量进行遍历并传入自定义函数,你需要同时传入Numbers、Numbers2两列的逐行值作为函数参数,应当使用支持多向量逐元素遍历的mapply()函数。
  • 判断逻辑错误:你的需求是判断Numbers2列的数值是否大于Numbers列,原函数中的x >= y判断逻辑与需求不符,参数对应关系也需要匹配需求调整。

修正后的完整可运行代码

df = data.frame(YesNo = c("yes","no","yes","no"), 
                Numbers = c(4, 5, 10, 10),
                Numbers2 = c(5,1,11,11))
rownames(df) = c("Test1","Test2","Test3","Test4")

improvement1 = function(x,y) {
  # x对应Numbers2,y对应Numbers,判断Numbers2是否大于Numbers
  if(x > y){
    return("Improve")
  } else {
    return("No")
  }
}

# 使用mapply逐行传入两个列的数值调用自定义函数
df$Improvement = mapply(FUN = improvement1, df$Numbers2, df$Numbers)
View(df)

更简洁的优化方案

R本身支持向量化运算,无需自定义函数和apply类循环,直接用ifelse()函数即可实现需求,代码更简洁执行效率更高:

df$Improvement = ifelse(df$Numbers2 > df$Numbers, "Improve", "No")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 16:15:02