Фильтрация списка, содержащегося во фрейме данных с вектором.R studio - PullRequest
0 голосов
/ 18 мая 2018

У меня есть фрейм данных из двух столбцов: один, называемый «path_name», содержит 74 пути, а другой, называемый «genes», содержит список генов для каждого пути.Кроме того, у меня есть вектор, содержащий 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. Я пытался это сделатьиспользуя функцию подмножества, но это не правильно.Есть кто-нибудь, кто может мне помочь?Заранее спасибо.

1 Ответ

0 голосов
/ 18 мая 2018

Обновление - 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")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...