I get the following warning when I use min or max in the dcast function from the reshape2 package. What is it telling me? I can't find anything that explains the warning message and I'm a bit confused about why I get it when I use max but not when I use mean or other aggregate functions.
Warning message:
In .fun(.value[0], ...) : no non-missing arguments to min; returning Inf
Here's a reproducible example:
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)
)
})
#------------------------------------------------------------
You get this warning because the min/max are applied to numeric of length 0 argument.
This reproduces the warning.
Note that for
mean
you don't get the warning :It is just a warning that don't have any effect in the computation. You can suppress it using
suppressWarnings
:EDIT
Above I am just answering the question: What's the meaning of the warning ? and why we have this min/max and not with mean function. The question why
dcast
is applying the aggregate function to a vector of length 0, it is just a BUG and you should contact the package maintainer. I think the error comes fromplyr::vaggregate
function used internally bydcast
,Specially this line of code: