Различные результаты для среднего и среднего вызова функции применяются к пропущенным значениям - PullRequest
0 голосов
/ 04 ноября 2019

Заметил, что если в матрице отсутствуют все значения, то среднее и медиана дают NA и NaN соответственно,

, например,

x<-as.matrix(c(NA, NA, NA))
apply(x,2, mean, na.rm = TRUE)
> apply(x,2, median, na.rm = TRUE)
[1] NA
> apply(x,2, mean, na.rm = TRUE)
[1] NaN

Интересно, что может быть причиной этого? и это будет иметь значение дальше, если я проверю только is.na () для фильтрации? Так как я вижу, что is.na () ИСТИНА для всех, в то время как:

> is.nan(apply(x,2, median, na.rm = TRUE))
[1] FALSE

1 Ответ

2 голосов
/ 04 ноября 2019

NaN означает «не число», а также является результатом операций, таких как деление на ноль!

Поскольку mean() в его основе вычисляется в фоновом режиме, примерно так: sum(x)/len(x) (или эквивалент) естьоперация деления и, следовательно, NaN может быть произведена, если значения отсутствуют (поскольку len (NA) равно 0). Это не относится к median().

. В любом случае фильтрация для is.na() или complete должна быть достаточной. Также согласно документации is.na() выводит TRUE для NaN.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...