Ответ 1
Вы получаете это предупреждение, потому что min/max применяются к числовому аргументу длины 0.
Это воспроизводит предупреждение.
min(numeric(0))
[1] Inf
Warning message:
In min(numeric(0)) : no non-missing arguments to min; returning Inf
Обратите внимание, что для mean
вы не получите предупреждение:
mean(numeric(0))
[1] NaN
Это просто предупреждение, которое не имеет никакого эффекта при вычислении. Вы можете подавить его с помощью suppressWarnings
:
suppressWarnings(dcast(data=molten.iris,
Species~variable,value.var="value",
fun.aggregate=min))
ИЗМЕНИТЬ
Выше я просто отвечаю на вопрос: какой смысл предупреждения? и почему мы имеем этот min/max, а не со средней функцией. Вопрос, почему dcast
применяет агрегатную функцию к вектору длины 0, это просто BUG, и вы должны обратиться к поддерживающему пакет. Я думаю, что ошибка исходит из plyr::vaggregate
функции, используемой внутри dcast
,
plyr::vaggregate(1:3,1:3,min)
Error in .fun(.value[0], ...) :
(converted from warning) no non-missing arguments to min; returning Inf
Специально эта строка кода:
plyr::vaggregate
function (.value, .group, .fun, ..., .default = NULL, .n = nlevels(.group))
{
### some lines
....
### Here I don't understand the meaning of .value[0]
### since vector in R starts from 1 not zeros!!!
if (is.null(.default)) {
.default <- .fun(.value[0], ...)
}
## the rest of the function
.....
}