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

在R中为tibble新增行求和列并替换原列:报错排查

问题解决方法

错误原因

你写的rowSums(across(...))语法搭配错误:across()用于列级批量运算,返回的是数据框结构,而rowSums()虽能处理数据框,但这种组合会触发下标类型错误,尤其在分组数据中更明显(错误提示里的group 1说明你的数据处于分组状态)。

正确解决方案

针对你的需求(行级求和指定列、处理NA值、移除原列),推荐两种实用写法:

写法1:用c_across()适配行级运算

c_across()是dplyr专为行级运算设计的函数,能提取每行指定列的向量,完美匹配rowSums的需求:

Table2 <- Table1 %>% 
  mutate(Col_E = rowSums(c_across(c(Col_B, Col_D)), na.rm = TRUE)) %>% 
  select(-Col_B, -Col_D)

写法2:用select()直接指定列

这种写法更直观,直接用select()筛选需要求和的列,再传给rowSums:

Table2 <- Table1 %>% 
  mutate(Col_E = rowSums(select(., Col_B, Col_D), na.rm = TRUE)) %>% 
  select(-Col_B, -Col_D)

关键说明

  • na.rm = TRUE:处理你真实数据中的NA值,避免求和结果直接变为NA
  • select(-Col_B, -Col_D):移除被求和的原列,得到目标结构的Table2

内容的提问来源于stack exchange,提问作者dq.canario

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 10:18:17