сравнить элементы двух списков по позиции, чтобы проверить общие строки в r - PullRequest
0 голосов
/ 07 ноября 2018

( Здесь и здесь аналогичные вопросы, но для python.)

У меня есть два списка одинаковой длины, каждый из которых содержит символьные векторы. Я хочу сравнить списки, положение за положением, чтобы проверить, имеют ли они общие элементы.

list_1 <- list(c("a","b"), c("a","c"))
list_2 <- list(c("a","x"), c("p","q"))

> list_1
[[1]]
[1] "a" "b"

[[2]]
[1] "a" "c"

> list_2
[[1]]
[1] "a" "x"

[[2]]
[1] "p" "q"

Вероятно, это проблема lapply, но я не уверен, как ее решить. Вот попытка, которая не работает:

> lapply(list_1, function(x){any(x %in% list_2)})
[[1]]
[1] FALSE

[[2]]
[1] FALSE

Ожидаемое решение:

[[1]]
[1] TRUE

[[2]]
[1] FALSE

Помощь

1 Ответ

0 голосов
/ 07 ноября 2018

Вы хотите ?mapply, что позволяет вам выполнять итерацию или применять анонимную функцию в «параллельном» множестве списков («m»).

mapply(function(x, y) {any(x %in% y)}, list_1, list_2)

Вы можете расширить его более чем на 2 списка, если добавите еще один аргумент в функцию anon.

...