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

R基础运算无na.rm参数时将NA视为0且无需转0的简便方法

R中行级加减运算将NA临时视为0的简便方案

无需修改原始数据中的NA值,以下两种方案均满足高频运算需求:

  • 基础R原生方案(无需预定义,适合偶尔使用)
    直接调用自带rowSums()函数,利用其内置的na.rm参数实现运算时临时忽略NA(等价于视为0):
    # 两列相加示例,直接得到目标C列
    hei$C <- rowSums(hei[, c("A", "B")], na.rm = TRUE)
    
    # 加减混合运算示例(如A - B),可通过调整列符号实现
    hei$D <- rowSums(cbind(hei$A, -hei$B), na.rm = TRUE)
    
  • 高频运算专属方案(自定义运算符,写法和原生加减几乎一致)
    提前一次定义中缀运算符,后续所有同类运算都可以用极简写法调用:
    # 定义加法运算符,运算时NA视为0,不修改原数据
    `%+0%` <- function(x, y) rowSums(cbind(x, y), na.rm = TRUE)
    # 定义减法运算符
    `%-0%` <- function(x, y) rowSums(cbind(x, -y), na.rm = TRUE)
    
    # 调用示例,写法和原生加减几乎无差异
    hei$C <- hei$A %+0% hei$B
    
    运行上述代码后得到的结果完全符合预期:
    A  B C
    1 1  1 2
    2 2  2 4
    3 3 NA 3
    4 4  4 8
    

内容的提问来源于stack exchange,提问作者thomas.diridondo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 16:06:07