Я хотел бы понять, почему функции sum / min / max в R интерпретируют символьную строку как TRUE при передаче в na.rm, а mean()
- нет.
Мое необразованное предположение состоит в том, что as.logical("xyz")
возвращает NA, который передается в na.rm в качестве аргумента, который по какой-то странной причине принимается как ИСТИНА для суммы / мин / макс, в то время как это не для mean()
Ожидаемый результат для sum(c(NA, 4, 5), na.rm = "xyz")
- это аргумент, который не интерпретируется как логическая ошибка (возвращается из среднего значения). Я не понимаю, почему это не так.
min/max/sum
являются примитивами, аmean
- нет. Обработкаif (na.rm)
вызывает ошибку вmean.default
, и я предполагаю, что это не так вmin/max/sum
из-за того, что они являются примитивами. - person Rich Scriven   schedule 22.05.2019na.rm
оценивался и принуждался последовательно по всем направлениям. Обратите внимание, чтоna.rm="FALSE"
действительно анализируется как логический, поэтому это не значит, что какая-либо строка становится ИСТИННОЙ, ср.sum(c(1:3,NA), na.rm="xyz") == 6
,sum(c(1:3,NA), na.rm="TRUE") == 6
иsum(c(1:3,NA), na.rm="FALSE") == NA
. - person HenrikB   schedule 22.05.2019