Там, кажется, здесь должно быть несколько вещей.
Ваш звонок qqplot
почти наверняка не делает то, что вы хотели. Обратите внимание, что документация ?qqplot
говорит:
qqplot производит QQ сюжет из двух наборов данных.
Ваш код:
qqplot(life$p,log, main = "Normal Q-Q Plot",plot.it = TRUE)
«Два набора данных», что вы даете его в жизни $ р и войти, так это будет сюжет квантилей жизни Фра против квантилей лога = log10 (жизнь $ р). Это бессмысленно. Поскольку ваш заголовок говорит «Обычный Q-Q-график», я подозреваю, что вы захотели построить лог против нормального распределения. Чтобы получить это, вы, возможно, захотите:
qqnorm(log, main = "Normal Q-Q Plot")
Теперь к вашему сообщению об ошибке.
Документация qqline
дает последовательность аргументов, как:
qqline(y, datax = FALSE, distribution = qnorm,
probs = c(0.25, 0.75), qtype = 7, ...)
Ваш вызов этой функции:
qqline(life$p,log, col="red")
Вы не назвать аргументы, чтобы они интерпретируются в порядке. life $ p is y, а log - datax. Предполагается, что datax является логическим значением (TRUE/FALSE), но вы передаете ему массив чисел, , следовательно, сообщение об ошибке. Я считаю, что вы хотели было:
qqline(log, col="red")
Наконец, log
это имя естественной функции логарифма. Плохая идея назвать вашу переменную log
, так как она будет запутанной, если это относится к функции или переменной.