我有一个两列数据框:一个名为" path_name",包含74个通路,另一个名为"基因",包含每个通路的基因列表。此外,我有一个包含28个突变基因的载体。我需要知道我可以找到每个突变基因的途径。例如:
mutated_genes=("MAP4K4" "TRAF2" "CACNG3" ...)
hsa04010__117 MAP4K4,DUSP10*,DUSP10*,DUSP10*,DUSP10*,DUSP10*,DUSP10*, DUSP10*,DUSP10*,DUSP10*,DUSP10*,DUSP3*,DUSP3*,DUSP3*,DUSP3*,PPM1A,AKT3,AKT3,AKT3,ZAK,MAP3K12,MAP3K13,TRAF2,CASP3,IL1R1,IL1R1,TNFRSF1A,IL1A,IL1A,TNF,RAC1,RAC1,RAC1,RAC1,MAP2K7,MAPK8,MAPK8,MAPK8,MECOM,HSPA1A,HSPA1A,HSPA1A,HSPA1A,HSPA1A,HSPA1A,MAP4K3,MAPK8IP2 MAP4K1....
hsa04014__118 MAP4K4,DUSP10*,DUSP10*,DUSP10*,DUSP10*,DUSP10* ...
我需要这样的东西:
hsa04010= MAP4K4 TRAF2
hsa01014= CACNG3
....
我不知道如何使用R过滤数据框中包含的列表。我尝试使用子集函数来完成它,但它不正确。有没有人可以帮助我?提前谢谢。
答案 0 :(得分:0)
更新 -
dplyr
方法可能
library(dplyr)
df1 <- df %>%
rowwise() %>%
mutate(mutated = paste(mutated_genes[unlist(
lapply(mutated_genes, function(x) x %in% strsplit(genes, ",")[[1]]))], collapse=","),
path_name = gsub("_.*$", "", path_name)) %>%
select(-genes) %>%
data.frame()
输出为:
df1
path_name mutated
1 hsa04010 MAP4K4,TRAF2
2 hsa04014 MAP4K4
示例数据:
df <-structure(list(path_name = c("hsa04010__117", "hsa04014__118"
), genes = c("MAP4K4,DUSP10*,DUSP10*,DUSP10*,DUSP10*,DUSP10*,DUSP10*,DUSP10*,DUSP10*,DUSP10*,DUSP10*,DUSP3*,DUSP3*,DUSP3*,DUSP3*,PPM1A,AKT3,AKT3,AKT3,ZAK,MAP3K12,MAP3K13,TRAF2,CASP3,IL1R1,IL1R1,TNFRSF1A,IL1A,IL1A,TNF,RAC1,RAC1,RAC1,RAC1,MAP2K7,MAPK8,MAPK8,MAPK8,MECOM,HSPA1A,HSPA1A,HSPA1A,HSPA1A,HSPA1A,HSPA1A,MAP4K3,MAPK8IP2,MAP4K1",
"MAP4K4,DUSP10*,DUSP10*,DUSP10*,DUSP10*,DUSP10*")), class = "data.frame", row.names = c(NA,
-2L))
mutated_genes <- c("MAP4K4", "TRAF2", "CACNG3")