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 № 1Reduce(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)