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

使用dplyr的filter函数筛选行和大于4的行报错求助

问题解决:dplyr筛选行和大于4的行

错误原因

你的代码报错是因为rowSums(.)中的.在any_vars上下文里指代单个列(比如x或y),是一维向量,但rowSums要求输入至少是二维数组;同时你的逻辑也不符合需求——你要的是x和y的行和大于4,而非单个列的行和(单个列的行和无意义)。

正确解法

方法1:直接计算行和(最直观)

手动计算x+y的和,直接筛选:

df %>% filter(x + y > 4)

方法2:使用现代dplyr的across(推荐)

dplyr 1.0.0及以上版本推荐用across替代旧的filter_at,写法更清晰:

df %>% filter(rowSums(across(c(x, y))) > 4)

方法3:兼容旧版的filter_at写法

如果一定要用filter_at,需要把选中的列作为整体处理,而非逐个列判断:

df %>% filter_at(vars(x, y), ~ rowSums(cur_data()) > 4)

输出结果

以上方法执行后都会得到期望的输出:

x y z
1 3 3 A
2 4 4 B

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 15:32:06