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

如何用dplyr在长字符串列匹配模式并筛选含全部目标组织的物种

筛选包含所有目标组织的物种(R dplyr实现)

示例数据

先假设你的数据结构如下(和你提供的示例一致):

library(tibble)
df <- tibble(
  species = c("Human", "Human", "Human", "Human", "Mouse", "Mouse", "Mouse"),
  tissue = c("heart", "muscle", "kidney", "liver", "heart", "muscle", "kidney")
)

正确实现代码

首先定义目标组织列表,再通过分组检查每个物种是否包含所有目标组织:

library(dplyr)

# 目标组织向量
target_tissues <- c("heart", "muscle", "kidney", "liver")

# 方法1:分组筛选后去重,返回tibble格式结果
result <- df %>%
  group_by(species) %>%
  filter(all(target_tissues %in% tissue)) %>%
  distinct(species)

# 方法2:直接提取符合条件的物种字符向量
result_vec <- df %>%
  group_by(species) %>%
  summarise(has_all_tissues = all(target_tissues %in% tissue)) %>%
  filter(has_all_tissues) %>%
  pull(species)

运行后result会返回包含"Human"的 tibble,result_vec直接返回字符值"Human",完全符合你的期望。

错误原因分析

你之前的代码返回空,大概率是没按物种分组检查全包含:比如错误地逐行匹配组织(如filter(tissue == target_tissues)),或者用any()代替all(),导致无法筛选出同时拥有所有目标组织的物种。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 14:39:50