Как совместить использование% in% с оператором OR? - PullRequest
0 голосов
/ 02 июля 2019

Я хотел бы посмотреть и проверить, появляются ли значения из одного набора ("набора A") в или наборе B или наборе C. Я пытался использовать %in% оператор для этой цели, но не мог понять, как его объединить с ИЛИ.

Ниже приводится воспроизводимый пример, но суть того, что я пытаюсь получить, выглядит примерно так:

set_a %in% (set_b | set_c) 

где я хочу знать, какие значения из set_a существуют либо в set_b , либо в set_c , либо в обоих.

Пример

#Step 1 :: Creating the data

    set_a <- unlist(strsplit("Eden Kendall Cali Ari Madden Leo Stacy Emmett Marco Bridger Alissa Elijah Bryant Pierre Sydney Luis", split=" "))

    set_b <- as.data.table(unlist(strsplit("Kathy Ryan Brice Rowan Nina Abram Miles Kristina Gabriel Madden Jasper Emmett Marco Bridger Alissa Elijah Bryant Pierre Sydney Luis", split=" ")))
    set_c <- as.data.table(unlist(strsplit("Leo Stacy Emmett Marco Moriah Nola Jorden Dalia Kenna Laney Dillon Trystan Elijah Bryant Pierr", split=" ")))


    NamesList <- list(set_b, set_c) #set_b and set_c will now become neighboring data.table dataframes in one list.
    > NamesList
    [[1]]
              V1
     1:    Kathy
     2:     Ryan
     3:    Brice
     4:    Rowan
     5:     Nina
     6:    Abram
     7:    Miles
     8: Kristina
     9:  Gabriel
    10:   Madden
    11:   Jasper
    12:   Emmett
    13:    Marco
    14:  Bridger
    15:   Alissa
    16:   Elijah
    17:   Bryant
    18:   Pierre
    19:   Sydney
    20:     Luis

    [[2]]
             V1
     1:     Leo
     2:   Stacy
     3:  Emmett
     4:   Marco
     5:  Moriah
     6:    Nola
     7:  Jorden
     8:   Dalia
     9:   Kenna
    10:   Laney
    11:  Dillon
    12: Trystan
    13:  Elijah
    14:  Bryant
    15:   Pierr

#Step 2 :: Checking which values from set_a appear in either set_b or set_c

    matches <- set_a %in% (set_b | set_c)
    #doesn't work!

Есть идеи? Кстати, для меня важно использовать формат data.table.

Ответы [ 2 ]

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

Вы можете попробовать условия отдельно

set_a %in% set_b | set_a %in% set_c

Или используйте union или unique

set_a %in% union(set_b, set_c)

set_a %in% unique(c(set_b, set_c))
0 голосов
/ 02 июля 2019

Мы можем использовать

Reduce(`|`, lapply(list(set_b, set_c), `%in%`, set_a))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...