Как создать бинарную матрицу отношений парных вхождений из списка строк? - PullRequest
1 голос
/ 17 мая 2019

имеют список файлов, которые содержат определенные гены, и я хочу создать матрицу бинарных отношений в R, которая показывает присутствие каждого гена в каждом файле.

Например, вот мои файлы aaa, bbb, ccc и ddd и связанные с ними гены.

aaa=c("HERC1")
bbb=c("MYO9A", "PKHD1L1", "PQLC2", "SLC7A2")
ccc=c("HERC1")
ddd=c("MACC1","PKHD1L1")

Мне нужно сгенерировать другую таблицу, в которой для каждой пары генов я назначаюзначение 1, если они оба присутствуют в конкретном файле, и 0 в противном случае .Следуя примеру, который я привел ранее, эта новая таблица должна выглядеть следующим образом:

enter image description here

Кто-нибудь знает быстрый способ получить этот новый bigenic?таблица в R?Спасибо!

1 Ответ

1 голос
/ 18 мая 2019

Если вы можете прочитать файлы в именованный список, вот один из способов, используя tidyverse -

file_list <- list(aaa = aaa, bbb = bbb, ccc = ccc, ddd = ddd)

result <- stack(file_list) %>% 
  inner_join(stack(file_list), by = c("ind" = "ind")) %>% 
  select(gene1 = values.x, gene2 = values.y, file_name = ind) %>%
  mutate(n = 1) %>% 
  complete(gene1, gene2, file_name, fill = list(n = 0)) %>% 
  filter(gene1 != gene2,
         !duplicated(
           apply(., 1, function(x) paste0(sort(x), collapse = ""))
         )
  ) %>% 
  spread(file_name, n)

# A tibble: 15 x 6
   gene1   gene2     aaa   bbb   ccc   ddd
   <chr>   <chr>   <dbl> <dbl> <dbl> <dbl>
 1 HERC1   MACC1       0     0     0     0
 2 HERC1   MYO9A       0     0     0     0
 3 HERC1   PKHD1L1     0     0     0     0
 4 HERC1   PQLC2       0     0     0     0
 5 HERC1   SLC7A2      0     0     0     0
 6 MACC1   MYO9A       0     0     0     0
 7 MACC1   PKHD1L1     0     0     0     1
 8 MACC1   PQLC2       0     0     0     0
 9 MACC1   SLC7A2      0     0     0     0
10 MYO9A   PKHD1L1     0     1     0     0
11 MYO9A   PQLC2       0     1     0     0
12 MYO9A   SLC7A2      0     1     0     0
13 PKHD1L1 PQLC2       0     1     0     0
14 PKHD1L1 SLC7A2      0     1     0     0
15 PQLC2   SLC7A2      0     1     0     0 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...