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

R dplyr中mutate报错'must be size 1, not 2'的解决求助

问题原因
  • 原生R的if仅支持长度为1的逻辑判断,你传入了整列(长度大于1)作为判断条件,因此触发警告,仅使用列的第一个元素做判断,和预期的逐行计算逻辑不符。
  • 你在mutate内使用了UXQ_Boxes$的写法直接引用全量数据列,没有适配分组运算的规则,分组后每组仅1行,但你返回了长度为2的全列结果,因此触发大小不匹配的报错。
解决方案

推荐使用dplyr::case_when改写逻辑,语法更清晰,天然适配dplyr的运算和分组规则,也不需要嵌套多层if/else:

UXQ_Boxes <- UXQ_Boxes %>%
  mutate(WeightedEffective = 6 * case_when(
    TaskCompletionRate > 0.9 ~ Effective_Overall_TopboxMean * 1,
    TaskCompletionRate > 0.79 ~ Effective_Overall_TopboxMean * 0.9 * 100,
    TaskCompletionRate > 0.65 ~ Effective_Overall_TopboxMean * 0.8 * 100,
    TaskCompletionRate > 0.5 ~ Effective_Overall_TopboxMean * 0.6 * 100,
    TaskCompletionRate > 0.25 ~ Effective_Overall_TopboxMean * 0.4 * 100,
    TaskCompletionRate < 0.26 ~ Effective_Overall_TopboxMean * 0.2 * 100
  ))

如果要保留原来的嵌套判断写法,只要删除所有UXQ_Boxes$前缀,同时把if替换为逐行运算的ifelse即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 06:54:01