Как удалить элемент из списка, когда в элементах есть определенные значения? - PullRequest
0 голосов
/ 14 марта 2020

У меня есть следующий список:

> combination
[[1]]
[1]  1  10  7 15

[[2]]
[1]  1  10  7 15

[[3]]
[1]  10  3  10 15

[[4]]
[1]  10  3  7 15

[[5]]
[1]  10  10  5 15

Как удалить те, которые содержат примеры как 7 и 10?

Предположим, я удаляю элементы, которые содержат как 7, так и 10, в итоге это должно выглядеть так:

> combination
[[3]]
[1]  10  3  10 15

[[5]]
[1]  10  10  5 15

Спасибо за любую помощь по этому вопросу.

Ответы [ 2 ]

0 голосов
/ 14 марта 2020

Мы можем использовать sum на логическом векторе для подмножества

combination[sapply(combination, function(x) sum(c(7, 10) %in% x)) != 2]
#[[1]]
#[1] 10  3 10 15

#[[2]]
#[1] 10 10  5 15

data

combination <- list(c(1, 10, 7, 15), c(1, 10, 7, 15), c(10,  3,  10, 15), 
                    c(10 , 3 , 7, 15), c(10,  10,  5, 15))
0 голосов
/ 14 марта 2020

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

Filter(function(x) !all(c(7, 10) %in% x), combination)

#[[1]]
#[1] 10  3 10 15

#[[2]]
#[1] 10 10  5 15

Другие варианты могут быть:

2) Использование sapply

combination[sapply(combination, function(x) !all(c(7, 10) %in% x))]

3) Использование purrr::discard

purrr::discard(combination, ~all(c(7, 10) %in% .x))

4) Использование purrr::keep

purrr::keep(combination, ~!all(c(7, 10) %in% .x))

data

combination <- list(c(1, 10, 7, 15), c(1, 10, 7, 15), c(10,  3,  10, 15), 
                    c(10 , 3 , 7, 15), c(10,  10,  5, 15))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...