Как искать сосуществующие элементы в нескольких строковых векторах в R - PullRequest
0 голосов
/ 01 июля 2019

Вот пример:

    elem<-c("A1", "B2")
    set.list<-list(
       set1=c("G1", "H2", "C3", "F6", "A1", "D4"),
       set2=c("F6", "C3", "E5", "D4", "B2", "H2"),
       set3=c("A1", "B2", "B2", "E5", "F6", "D4"),
       set4=c("A1", "D4", "H2", "F6", "E5", "C3","F6", "B2", "D4", "A1"))

То, что я хотел вернуть, - это количество наборов, которое elem, например. A1 и B2 сосуществуют в наборе, который будет n = 2, потому что set3 и set4 имеют как A1, так и B2, а set1 и set2 нет.

Ответы [ 2 ]

1 голос
/ 01 июля 2019

Попробуйте:

sum(sapply(set.list, function(set) ifelse(all(elem %in% set), 1, 0)))

или sum(sapply(set.list, function(x) all(elem %in% x))), если не требуется (см. Комментарий @markus)

1 голос
/ 01 июля 2019

Опцией будет all, чтобы проверить, все ли элементы в 'elem' найдены в каждом из list элементов

f1 <- function(x, y) all(x %in% y)
i1 <- sapply(set.list, f1, x = elem) 

Если это общее количество

sum(i1)
#[1] 2

Если это количество для каждого элемента

sapply(set.list, function(x) sum(elem %in% x))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...