我正在尝试在数据框中(粘贴在下面)中对所有目标组织
("heart", "muscle", "kidney", "liver")
进行模式匹配,并列出具有所有目标组织的物种名称。
我的DF:
Species,Tissue
Human,Kr_liver_2
Human,Heart
Human,Liver_556
Human,Kr_Kidney_2
Human,Kr_Muscle_2
Human,Kr_Brain_2
Mouse,Brain
Mouse,Kr_liver_3
Mouse,Kr_liver_5
Mouse,Kr_liver_27
我尝试了下面的方法,但得到了空输出,但是,基于上面数据框的所需输出应该是“人类”,因为它具有所有目标组织。
Tissue_check <- df %>%
group_by(Species) %>%
filter(all(grepl(paste(target_tissues, collapse = "|"), tolower(Tissue)))) %>%
pull(Species) %>%
unique()
我怎样才能实现这个目标?
您可以将
Tissue
列的所有元素粘贴在一起,并确定是否所有目标组织都包含在其中。
library(dplyr)
target <- c("heart", "muscle", "kidney", "liver")
df %>%
filter(all(sapply(target, grepl, toString(Tissue), ignore.case = TRUE)),
.by = Species)
# Species Tissue
# 1 Human Kr_liver_2
# 2 Human Heart
# 3 Human Liver_556
# 4 Human Kr_Kidney_2
# 5 Human Kr_Muscle_2
# 6 Human Kr_Brain_2