R: найти все элементы из списка и записать результаты в другой список - PullRequest
0 голосов
/ 09 июля 2020

У меня в основном два списка A и B (список списков), и я хочу найти все элементы в B, которые соответствуют нескольким условиям из A. Я сделал:

for(k in 1:length(A)) {
   matches[k] <- length(which(condition 1 &
                              condition 2 &
                              ...         &
                              condition n)
   if(matches[k] == 0) {
      matches[k] <- -9999
   } else {
     matches[k] <- which(condition 1 &
                         condition 2 &
                         ...         &
                         condition n)
     }
}

Но при этом сохраняется только один находка. Я получаю предупреждение:

«количество заменяемых элементов не кратно длине замены»

Я понимаю, в чем проблема. which () находит несколько элементов в B, но не может записать несколько элементов в строку списка. Есть идеи, как решить эту проблему?

Ура

1 Ответ

1 голос
/ 09 июля 2020

Похоже, что ваш matches вектор. Попробуйте работать со списком, чтобы вы могли хранить один или несколько элементов.

Я бы изменил ваш код следующим образом:

matches <- list()
for(k in 1:length(A)) {
   matches[[k]] <- length(which(condition 1 &
                              condition 2 &
                              ...         &
                              condition n)
   if(matches[[k]] == 0) {
      matches[[k]] <- -9999
   } else {
     matches[[k]] <- which(condition 1 &
                         condition 2 &
                         ...         &
                         condition n)
     }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...