Pas de non-arguments manquants avertissement lors de l'utilisation de min ou max dans reshape2
Je reçois le message d'avertissement suivant lorsque j'utilise le min ou le max dans la dcast fonction de la reshape2 paquet. Qu'est ce qu'il me dit? Je ne trouve rien qui explique le message d'avertissement et je suis un peu confus au sujet de pourquoi je l'obtiens lorsque j'utilise max, mais pas lorsque j'utilise la moyenne ou d'autres fonctions d'agrégation.
Message d'avertissement:
Dans .plaisir(.la valeur[0], ...) : pas de non-arguments manquants pour min; retour Inf
Voici un exemple reproductible:
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)
)
})
#------------------------------------------------------------
- La raison de ce qui s'affiche lors de l'utilisation de
min
oumax
mais pasmean
est quemean
ne pas jeter un avertissement lorsqu'il est appliqué à une longueur de 0 vecteur. Si vous nedcast(data=molten.iris,Species~variable,value.var="value", function(x) {print(x); min(x)})
vous voyez que la premièrex
est un numérique, vecteur de longueur 0. Depuisfill=NULL
dansdcast
par défaut, puismin
est appliqué à la longueur de 0 vecteur et produit le message d'avertissement. La question est de savoir pourquoi il y a ce modèle structurel que le premier élément retournée est d'une longueur de 0 vecteur... Aucune idée de pourquoi cela se produit depuis toutes les combinaisons de facteurs semblent exister
Vous devez vous connecter pour publier un commentaire.
Vous obtenir cet avertissement, car le min/max sont appliqués à numérique de longueur 0 argument.
Cela reproduit l'avertissement.
Noter que pour
mean
vous n'obtenez pas l'avertissement :C'est juste un avertissement qui n'ont pas d'effet dans le calcul. Vous pouvez le supprimer à l'aide de
suppressWarnings
:MODIFIER
Ci-dessus, je suis juste de répondre à la question: Quelle est la signification de l'avertissement ? et pourquoi nous avons cette min/max et pas moyen de la fonction. La question de savoir pourquoi
dcast
est l'application de la fonction d'agrégation à un vecteur de longueur 0, c'est juste un BUG et vous devez contacter le mainteneur du paquet. Je pense que l'erreur vient deplyr::vaggregate
fonction utilisée en interne pardcast
,Spécialement cette ligne de code:
fill = 0
(ou toute autre valeur) depuis qui ne s'appliquera pasfill
à la numérique de longueur 0.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
je suis Donc de répondre à cette. Pourdcast
comportement laid c'est sûrement un BUG.min
produit un avertissement etmean
n'est pas n'était pas une explication complète donc ce que je cherchais ce que vous avez écrit dans votre "MODIFIER". Merci encore.RobustMax <- function(x) {if (length(x)>0) max(x) else -Inf}
et ensuite l'utiliser à la place demax
.+Inf
pourmin
et-Inf
pourmax
.