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

R语言使用if else结合filter按多条件筛选data.frame数据

R数据框多条件分支筛选实现方案

原代码错误原因

  • 管道符%>%已经将前序的df1传入filter()作为第一个操作对象,不需要在filter()内重复写df1
  • 语法逻辑错误:str_detect()的第二个参数应为待匹配的字符串,原代码将FAO >=4的逻辑判断写入str_detect()参数内,导致参数类型不匹配报错。

正确实现代码

方案1:if_else分支判断(更贴合需求描述逻辑)

需要先加载tidyverse套件(包含dplyr和stringr):

library(tidyverse)

# 筛选逻辑
result <- df1 %>%
  filter(if_else(
    condition = str_detect(sample_id, "3666"),
    true = FAO > 4,
    false = FAO > 20
  ))

方案2:逻辑运算符直接组合

result <- df1 %>%
  filter(
    (str_detect(sample_id, "3666") & FAO > 4) |
    (!str_detect(sample_id, "3666") & FAO > 20)
  )

输出结果

运行上述任意代码后得到的结果如下,与预期完全一致:

sample_id FAO
1     SB024 100
2   3666-01  50
3   3666-02   5

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 01:18:02