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

在R中用dplyr创建依赖fn/tt的esc变量时报错,求解决方案

问题解决建议

1. 语法错误修复

报错的核心原因是**mutate()函数缺少闭合的右括号**,导致R无法正确解析语句结尾。

原代码补上缺失的)后即可修复语法问题:

db %>% 
  mutate(esc=ifelse((fn<100) | ((fn>100 & tt < 20) | (fn <300 & tt < 20)), "Yes", "No"))

2. 逻辑简化优化

原条件可以大幅简化:
你设定的三个条件中,后两个都是tt < 20(无论fn是大于100还是小于300),加上第一个fn < 100的条件,整体等价于fn < 100 | tt < 20,简化后代码更易读且执行效率一致:

db %>% 
  mutate(esc = ifelse(fn < 100 | tt < 20, "Yes", "No"))

逻辑验证示例

可以用测试数据验证简化后的逻辑是否符合预期:

# 构造测试数据
test_db <- tibble(fn = c(50, 150, 350, 250),
                  tt = c(25, 15, 18, 22))

# 运行简化代码
test_db %>% mutate(esc = ifelse(fn < 100 | tt < 20, "Yes", "No"))

输出结果:

# A tibble: 4 × 3
     fn    tt esc  
  <dbl> <dbl> <chr>
1    50    25 Yes  
2   150    15 Yes  
3   350    18 Yes  
4   250    22 No   

完全匹配你预期的判断规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 10:01:47