R Случаи не будут распознавать результаты is.na()

90
15

Я пытаюсь создать коэффициент из вектора d который указывает, отсутствует ли каждое значение d, меньше threshhold или больше/равно threshhold. Я попытался с помощью следующего кода, используя cases функции из memisc пакета.

threshhold = 5
d <- sample(c(1:10, NaN), 50, replace=TRUE)
d_case <- cases(
is.na(d),
d > threshhold,
d <= threshhold
)

и получил предупреждение: In cases(is.na(d), d > threshhold,: condition is.na(d) is never satisfied.

Я также пытался использовать операторы присваивания,

d_case <- cases(
is.na(d) -> 0,
d > threshhold -> 1,
d <= threshhold -> 2
)

и получил такое же предупреждение. Я проверил, и d содержит значения NaN значение is.na() должно возвращаться как истинное (и когда я проверяю его за пределами случаев). Кто-нибудь знает, почему дела не работают, или что я могу сделать, чтобы получить индикаторный фактор, который мне нужен?

спросил(а) 2021-01-25T15:24:59+03:00 4 месяца, 2 недели назад
1
Решение
63

Посмотрите на ?cases соответствии с документацией, вы можете сделать это так

d <- c(-1:3,NA,1:2)
fun <- function(x){
cases(
is.na(x) -> 0,
x > threshhold -> 1,
x <= threshhold -> 2
)
}
d_case <- fun(d)
d_cases

ответил(а) 2021-01-25T15:24:59+03:00 4 месяца, 2 недели назад
45

Как насчет:

addNA(as.factor(d>threshold))
....
Levels: FALSE TRUE <NA>

ответил(а) 2021-01-25T15:24:59+03:00 4 месяца, 2 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема