/ / find przecinają się rzędy w r - r, przecinają się

znajdź przecinają się przez wiersze w r - r, przecinają się

Próbuję znaleźć wspólne cele, na które wpływają leki (pokazane jako numer wpisu w poniższej tabeli).

IDARUBICIN <- c(1,5,12,13,18,27,NA,NA,NA,NA,NA,NA)
EPIRUBICIN <- c(1,2,5,6,12,13,17,18,19,21,23,24)
DAUNORUBICIN <- c(1,4,5,11,12,13,16,18,19,27,41,44)
VINBLASTINE <- c(1,4,5,12,13,18,19,27,30,37,39,44)
VINORELBINE <- c(1,5,12,13,18,19,27,41,44,NA,NA,NA)
all <- rbind(IDARUBICIN,EPIRUBICIN,DAUNORUBICIN,VINBLASTINE,VINORELBINE)
> all
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12]
IDARUBICIN      1    5   12   13   18   27   NA   NA   NA    NA    NA    NA
EPIRUBICIN      1    2    5    6   12   13   17   18   19    21    23    24
DAUNORUBICIN    1    4    5   11   12   13   16   18   19    27    41    44
VINBLASTINE     1    4    5   12   13   18   19   27   30    37    39    44
VINORELBINE     1    5   12   13   18   19   27   41   44    NA    NA    NA

Próbowałem znaleźć przecięcie za pomocą każdego wiersza, który działał dobrze

ans <- Reduce(intersect, list(all[1,],all[2,],all[3,],all[4,],all[5,]))
> ans
[1]  1  5 12 13 18

Ale mam 30 wierszy (tj. 30 leków), więc nie mogę użyć tej metody. Czy ktoś może mi powiedzieć, jak znaleźć przecięcie stołu według wierszy? Nie mogę użyć mojego wyżej wymienionego rozwiązania, ponieważ wymaga ode mnie wpisania każdego wiersza i nie chcę tego robić

Odpowiedzi:

4 dla odpowiedzi № 1
Reduce(intersect, data.frame(t(all)))
# [1]  1  5 12 13 18

Nie potrzeba dodatkowych zależności!


1 dla odpowiedzi nr 2
library(tibble)
library(purrr)

t(all) %>%
as_tibble() %>%
reduce(intersect)