При использовании min или max в reshape2 нет предупреждения о пропущенных аргументах
Я получаю следующее предупреждение, когда я использую min или max в функции dcast из пакета reshape2. Что он мне говорит? Я не могу найти ничего, что объясняет предупреждающее сообщение, и я немного смущен тем, почему я получаю его, когда я использую max, но не когда я использую mean или другие агрегатные функции.
предупреждение:
In .забава.(значение[0], ...): нет отсутствующих аргументов в min; возврат Inf
вот воспроизводимых пример:
data(iris)
library(reshape2)
molten.iris <- melt(iris,id.var="Species")
summary(molten.iris)
str(molten.iris)
#------------------------------------------------------------
# Both return warning:
dcast(data=molten.iris,Species~variable,value.var="value",fun.aggregate=min)
dcast(data=molten.iris,Species~variable,value.var="value",fun.aggregate=max)
# Length looks fine though
dcast(data=molten.iris,Species~variable,value.var="value",fun.aggregate=length)
#------------------------------------------------------------
# No warning messages here:
aggregate(value ~ Species + variable, FUN=min, data=molten.iris)
aggregate(value ~ Species + variable, FUN=max, data=molten.iris)
#------------------------------------------------------------
# Or here:
library(plyr)
ddply(molten.iris,c("Species","variable"),function(df){
data.frame(
"min"=min(df$value),
"max"=max(df$value)
)
})
#------------------------------------------------------------
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, это просто ошибка, и вы должны связаться с сопровождающим пакета. Я думаю, что ошибка исходит от