ЕСЛИ столбцы в X ЛОЖЬ, отбросить те же столбцы в Y? - PullRequest
0 голосов
/ 30 марта 2020

Попытка иметь определенные c столбцы в логическом векторе (X) обмениваться данными с теми же столбцами в символьном векторе (Y), так что если какие-либо столбцы в логическом векторе имеют значение FALSE, то эти же столбцы в символьном векторе упадет.

> X[1:5]
[1] FALSE  TRUE  TRUE FALSE  TRUE
> Y[1:5]
[1] "Cats" "Dogs" "Fish" "Mice" "Bird"

Причина, по которой я не просто вручную "булево" обозначаю символы Y, заключается в том, что они не являются фиксированными и извлечены из несовместимых источников. Поэтому для моей конкретной ситуации X должен логически определить судьбу Y.

Я безуспешно попробовал это хитрое утверждение if.

if(X[1:5] == FALSE){rm(Y[1:5])}

Это моя желаемая конечная цель:

> Y
[1] "Dogs" "Fish" "Bird"

1 Ответ

3 голосов
/ 30 марта 2020

Как правило, вы можете подмножество вектора (1), используя положение, например, Y[1:2], чтобы взять первые два элемента из Y, или (2), используя логический вектор для индексации элементов, которые мы хотим. Для вашей проблемы вы можете использовать второе решение.

Y[X]
# that similar to [c(FALSE, TRUE, TRUE, FALSE, TRUE)]

# [1] "Dogs" "Fish" "Bird"

data

X <- c(FALSE,  TRUE,  TRUE, FALSE,  TRUE)
Y <- c("Cats", "Dogs", "Fish", "Mice", "Bird")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...