multiple funcion dcast columns r aggregate-functions reshape2

dcast - funcion melt en r



No hay argumentos no perdidos. Advertencia cuando se usa min o max en reshape2 (1)

Recibo la siguiente advertencia cuando uso min o max en la función de difusión del paquete reshape2. ¿Qué me está diciendo? No puedo encontrar nada que explique el mensaje de advertencia y estoy un poco confundido acerca de por qué lo obtengo cuando uso max pero no cuando uso media u otras funciones agregadas.

Mensaje de advertencia:
En .fun (.value [0], ...): no hay argumentos no faltantes para min; regresando inf

Aquí hay un ejemplo reproducible:

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


Obtendrá esta advertencia porque los valores mínimo / máximo se aplican a un argumento de longitud 0 numérico.

Esto reproduce la advertencia.

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

Tenga en cuenta que por el momento no recibe la advertencia:

mean(numeric(0)) [1] NaN

Es solo una advertencia que no tiene ningún efecto en el cálculo. Puedes suprimirlo mediante la suppressWarnings :

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

EDITAR

Arriba, solo estoy respondiendo la pregunta: ¿Cuál es el significado de la advertencia? y por qué tenemos este mínimo / máximo y no con función media. La pregunta de por qué dcast está aplicando la función agregada a un vector de longitud 0, es solo un error y debe ponerse en contacto con el encargado del paquete. Creo que el error proviene de la función plyr::vaggregate utilizada internamente por dcast ,

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

Especialmente esta línea de código:

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