Geen niet-ontbrekende argumenten waarschuwing bij gebruik van Min of Max in Reshape2

Ik krijg de volgende waarschuwing wanneer ik min of max in de Dcast-functie van het Reshape2-pakket gebruik. Wat vertelt het mij? Ik kan niets vinden dat het waarschuwingsbericht verklaart en ik ben een beetje in de war over waarom ik het krijg als ik Max gebruik, maar niet wanneer ik gemiddelde of andere geaggregeerde functies gebruik.

Waarschuwingsbericht:
in .fun (.Value [0], …): Geen niet-ontbrekende argumenten aan Min; retourneren van INF

Hier is een reproduceerbaar voorbeeld:

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)
    )
})
#------------------------------------------------------------

Antwoord 1, Autoriteit 100%

U krijgt deze waarschuwing omdat de min / max wordt toegepast op numeriek van lengte 0-argument.

Dit reproduceert de waarschuwing.

min(numeric(0))
[1] Inf
Warning message:
In min(numeric(0)) : no non-missing arguments to min; returning Inf

Merk op dat voor meanU krijgt niet de waarschuwing:

mean(numeric(0))
[1] NaN

Het is slechts een waarschuwing die geen effect heeft in de berekening. U kunt het onderdrukken met suppressWarnings:

suppressWarnings(dcast(data=molten.iris,
                  Species~variable,value.var="value",
                  fun.aggregate=min))

Bewerken

Hierboven beantwoord ik gewoon de vraag: wat is de betekenis van de waarschuwing? en waarom we deze min / max en niet met gemiddelde functie hebben. De vraag waarom dcastde geaggregeerde functie toepast op een vector van lengte 0, het is slechts een bug en u moet contact opnemen met de pakkethouder. Ik denk dat de fout afkomstig is van plyr::vaggregatefunctie intern gebruikt door dcast,

plyr::vaggregate(1:3,1:3,min)
Error in .fun(.value[0], ...) : 
  (converted from warning) no non-missing arguments to min; returning Inf

Speciaal deze regel code:

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 
    .....
}

Other episodes