В R: Как сгенерировать подмножество таблицы данных на основе ее общих элементов с двумя списками символов - PullRequest
0 голосов
/ 17 января 2019

Я застрял в этой проблеме, и я не уверен, какой подход более эффективен! Я хочу создать таблицу данных на основе двух списков символов: Мой первый data.table:

sample 1   sample 2     N
   a         b          2
   c         c          1
   b         c          3
   c         d          2
   a         c          3
   d         f          1
   d         h          3

если списки:

List1= list('a','b')
List2= list('c')

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

Результат, который я ищу:

    sample 1   sample 2     N
   a         b              2
   c         c              1
   b         c              3
   c         d              2       
   a         c              3

Буду признателен за помощь.

Ответы [ 3 ]

0 голосов
/ 17 января 2019

Что-нибудь мешает вам объединить списки и затем выполнить фильтрацию по результату?

Например:

list <- c(unlist(List1), unlist(List2))
df <- filter(df, `sample 1` %in% list)
0 голосов
/ 17 января 2019

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

subset(df2, sample1 %in% unlist(c(List1, List2)))

данные

df2 <- structure(list(sample1 = c("a", "c", "b", "c", "a", "d", "d"), 
sample2 = c("b", "c", "c", "d", "c", "f", "h"), N = c(2L, 
1L, 3L, 2L, 3L, 1L, 3L)), class = "data.frame", row.names = c(NA, 
-7L))

List1 <- list('a', 'b')
List2 <- list('c')
0 голосов
/ 17 января 2019
DT[`sample 1` %in% unlist(list(List1, List2))]
   sample 1 sample 2 N
1:        a        b 2
2:        c        c 1
3:        b        c 3
4:        c        d 2
5:        a        c 3

Данные

List1 = list('a', 'b')
List2= list('c')
DT <- fread(
"sample 1,  sample 2,  N
 a,         b,          2
 c,         c,          1
 b,         c,          3
 c,         d,          2
 a,         c,          3
 d,         f,          1
 d,         h,          3")
...