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

R语言中使用if_else实现列间减法运算报错问题求助

嘿,我瞅见你的问题啦!你的代码报错其实是个小疏忽——少了两个闭合括号,if_else函数和外层的mutate都没写完收尾的括号,这在R里可是会直接触发语法错误的。

先给你修正后的可用代码

把括号补全就能正常运行了:

df <- df %>% mutate(diff = if_else(!is.na(act) & !is.na(tar), act - tar, as.integer(NA)))

其实还有更简洁的写法

既然你的act和tar都是整数类型,完全不用手动判断缺失值——R在做数值运算时,只要其中一个值是NA,结果就会自动返回NA,而且结果依然保持整数类型。所以你可以直接简化成:

df <- df %>% mutate(diff = act - tar)

咱们来核对下结果,对应你的原始数据:

acttardiff
431
NANANA
-5-4-1
000
NA3NA

完全符合你想要的效果对吧?

另外补充个小细节:R里专门有表示整数型缺失值的常量NA_integer_,你可以把as.integer(NA)换成它,写法更规范,不过两种方式都能正常工作~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 20:14:05