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

使用fct_lump()结合filter()筛选观测数超3的城市时出错求助

问题:使用fct_lump()结合filter()时出现逻辑向量错误

我有一个简单数据集,目标是找出观测数(n)超过3的城市,但调用fct_lump()函数时出现错误。

先执行统计代码:

tablo1 |>
  count(sehir, sort = TRUE)

得到的统计结果中,部分城市如Ankara观测数为23、Antalya为5等。

随后使用以下代码:

tablo1 |>
  count(sehir) |>
  filter(fct_lump(sehir, 5, w = n))

收到错误提示:

Error in filter():
ℹ In argument: fct_lump(sehir, 5, w = n).
Caused by error:
! ..1 must be a logical vector, not a object.

执行rlang::last_trace()得到的回溯信息也指向该错误原因,请问问题出在哪里?

问题原因与解决方法

  • 问题根源:fct_lump()的作用是将频数较低的因子水平合并为"Other",返回的是因子类型的向量,但filter()函数要求传入的必须是逻辑向量(由TRUE/FALSE组成的向量)来判断行的保留与否,两者类型不匹配,因此触发报错。你试图用fct_lump()保留高频城市,但直接放到filter()里是错误用法。

  • 针对“筛选n>3的城市”的正确代码:直接对统计得到的n列做逻辑判断即可:

tablo1 |>
  count(sehir) |>
  filter(n > 3)
  • 如果需求是保留前5个高频城市:先用fct_lump()转换因子列,再筛选掉合并后的"Other"组:
tablo1 |>
  count(sehir) |>
  mutate(sehir = fct_lump(sehir, 5, w = n)) |>
  filter(sehir != "Other")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 00:22:10