Поведение sum () с NA - PullRequest
       5

Поведение sum () с NA

0 голосов
/ 27 августа 2018

У меня есть ряд чисел, которые мне нужно сложить, некоторые значения отсутствуют (= NA), в некоторых редких случаях все значения отсутствуют. Например:

sum(c(1,1,2),na.rm=TRUE)
sum(c(1,1,NA),na.rm=TRUE)

Первая строка равна 4, вторая - 2.

Однако, если все случаи являются NA, как в:

sum(c(NA,NA,NA),na.rm=TRUE)

Это значение равно 0, а не NA.

В идеале, если все значения равны NA, я бы хотел, чтобы это значение оценивалось как NA. Есть предложения?

Ответы [ 2 ]

0 голосов
/ 27 августа 2018

Мы можем определить нашу собственную функцию суммы:

my_sum <- function(...) sum(..., na.rm = !all(is.na(c(...))))

Результат:

> my_sum(c(NA, 1))
[1] 1
> my_sum(c(NA, 1, 2))
[1] 3
> my_sum(c(NA, NA))
[1] NA
> my_sum(c(NA, 1), 1)
[1] 2
> my_sum(c(NA, NA), NA)
[1] NA
0 голосов
/ 27 августа 2018

Добавьте ifelse как это:

some_vector <- c(1,2,3,NA)
ifelse(sum(is.na(some_vector)) == length(some_vector), NA, sum(some_vector, na.rm = TRUE))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...