@ commentaire de r2evans est correct en ce que la différence est causée par des différences dans summary.data.frame
et summary.default
.
La valeur par défaut de digits
pour les deux méthodes est max(3L, getOption("digits") - 3L)
. Si vous n'avez pas modifié vos options, le résultat sera 4L
. Toutefois, les deux méthodes utilisent différemment leur argument digits
lors du formatage de la sortie, ce qui explique les différences dans la sortie des deux méthodes. De ?summary
:
digits
: entier, utilisé pour le numéro de mise à signif()
(pour summary.default
) ou format()
(pour summary.data.frame
).
Disons que nous avons le vecteur de la question des statistiques sommaires de x
:
q <- append(quantile(data$x), mean(data$x), after = 3L)
q
## 0% 25% 50% 75% 100%
## 0.00 6778.00 10395.00 9354.23 12811.00 21194.00
En summary.default
la sortie est formatée en utilisant signif
, qui arrondit est entrée au nombre fourni de digits
significatif:
signif(q, digits = 4L)
## 0% 25% 50% 75% 100%
## 0 6778 10400 9354 12810 21190
Alors que summary.data.frame
utilise format
, qui l'utilise est l'argument digits
comme seul un sugggestion (?format
) pour le nombre de chiffres significatifs à afficher:
format(q, digits = 4L)
## 0% 25% 50% 75% 100%
## " 0" " 6778" "10395" " 9354" "12811" "21194"
Ainsi, lorsqu'on utilise la valeur de l'argument par défaut digits
4
, summary.default(data$x)
tours les 5 chiffres quantiles à peine à 4 chiffres significatifs; mais summary.data.frame(data[2])
affiche les quantiles à 5 chiffres sans arrondir.
Si vous fournissez explicitement l'argument digits
comme plus grand que 4, vous obtiendrez des résultats identiques:
summary(data[2], digits = 5L)
## x
## Min. : 0.0
## 1st Qu.: 6778.0
## Median :10395.0
## Mean : 9354.2
## 3rd Qu.:12811.0
## Max. :21194.0
summary(data$x, digits = 5L)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.0 6778.0 10395.0 9354.2 12811.0 21194.0
À titre d'exemple extrême des différences entre les deux méthodes avec la valeur par défaut digits
:
df <- data.frame(a = 1e5 + 0:100)
summary(df$a)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 100000 100000 100000 100000 100100 100100
summary(df)
## a
## Min. :100000
## 1st Qu.:100025
## Median :100050
## Mean :100050
## 3rd Qu.:100075
## Max. :100100
Vos appels sont équivalents (après la résolution S3) 'summary.data.frame (données [2])' et 'summary.default (données $ x)'. Les fonctions sont définies légèrement différemment, et il semble que les statistiques soient un peu différentes aussi. Le calcul des quartiles est "jusqu'à l'interprétation" en fonction de la longueur des vecteurs numériques, et toutes les fonctions de R ne font pas les mêmes hypothèses que vous ou l'autre. Trouvez la méthode que vous préférez ou calculez-la vous-même (après avoir lu «? Quantile» pour certains détails). – r2evans