Il semble être plusieurs choses mal ici.
Votre appel au qqplot
ne fait presque certainement pas ce que vous vouliez. Notez que la documentation ?qqplot
dit:
qqplot produit une parcelle QQ de deux ensembles de données.
Votre code est:
qqplot(life$p,log, main = "Normal Q-Q Plot",plot.it = TRUE)
Les "deux ensembles de données" que vous lui donnez sont la vie $ p et log, donc ce tracera les quantiles de la vie $ p contre les quantiles de log = log10 (vie $ p). Ça n'a aucun sens. Puisque votre titre indique "Tracé Q-Q normal", je suppose que vous vouliez tracer le journal par rapport à une distribution normale. Pour obtenir cela, vous avez probablement voulu:
qqnorm(log, main = "Normal Q-Q Plot")
Maintenant à votre message d'erreur.
La documentation de qqline
donne la séquence argument:
qqline(y, datax = FALSE, distribution = qnorm,
probs = c(0.25, 0.75), qtype = 7, ...)
Votre appel à cette fonction est:
qqline(life$p,log, col="red")
Vous ne nommez pas les arguments afin qu'ils soient interprétés dans l'ordre. life $ p est y et log est datax. datax est censé être une valeur logique (TRUE/FALSE), mais vous lui transmettez un tableau de nombres, d'où le message d'erreur. Je crois que ce que vous aviez l'intention était:
qqline(log, col="red")
Enfin, log
est le nom de la fonction logarithme naturel. C'est une mauvaise idée de nommer votre variable log
car ce sera déroutant si cela se réfère à la fonction ou la variable.