Подмножество вектора с использованием другого логического вектора в R

Используя следующие два вектора R, я хочу извлечь подмножество valMe используя логические значения в boolMe, Кроме того, я хотел бы иметь два возможных выхода, один, где значения FALSE в boolMe опущены из valMeи тот, где значения FALSE заменяются на NA. Дальнейшая иллюстрация того, что я хочу сделать в коде:

вход

boolMe<-c(FALSE, TRUE, TRUE, TRUE, FALSE, TRUE)
valMe<-1:6

Предполагаемый выход

NA 2 3 4 NA 6

или же

2 3 4 6

2 ответа

Решение

Вы можете напрямую индексировать valMe используя [ оператор:

> valMe[boolMe]
[1] 2 3 4 6

См. Раздел 2.7 вводного руководства для более подробной информации.

Точно так же, если вы хотите НС:

> valMe[!boolMe] <- NA
> valMe
[1] NA  2  3  4 NA  6

! отменяет логическое логическое значение, поэтому вы выбираете значения, которые хотите пропустить. Затем, в прикосновении к R awesomeness, вы назначаете NA выбранным значениям.

Другие вопросы по тегам