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

R语言使用dplyr统计数据框每行非零列数报错如何解决

报错原因与修复方案

报错原因

你触发该报错的核心原因是dplyr 1.1.0及后续版本收紧了across()的使用范围限制:across()只能直接在dplyr动词(如mutate/summarise等)的顶层参数中使用。你将across()的输出通过管道传给reduce()时,相当于把across()放到了mutate的直接计算环境外,因此触发规则校验报错。如果你的代码之前能正常运行,近期突然报错,大概率是你升级了dplyr包到1.1.0以上版本导致的规则适配问题。

修复方案

优先推荐用向量化的rowSums替代across+reduce的组合,代码更简洁、运行效率更高:

library(dplyr)
test.out <- test %>% 
  mutate(
    Not_Present = rowSums(across(everything(), ~ .x == 0)),
    Present = ncol(test) - Not_Present
  )

结果验证

使用你提供的示例数据运行后输出如下,符合需求预期:

> test.out
          col1 col2 col3 col4 col5 Not_Present Present
row1 0.1263312    0    0    0    0           4       1
row2 0.0000000    0    0    0    0           5       0
row3 0.0000000    0    0    0    0           5       0
row4 0.0000000    0    0    0    0           5       0
row5 0.0000000    0    0    0    0           5       0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 12:24:02