为什么我的qqnorm图不能作为函数的一部分或在括号内运行?

问题描述 投票:0回答:1

我试图告诉R使用“{}”括号一次运行多行。我以前成功完成了这项工作。我试图通过在一个函数中定义几个图来一次生成多个图。

例如:

qqnorm(residuals(LM_auto), col="black", fg="blue", pch= 21, bg=col_1, alpha = .7, sub = shapiro_output, xlab = "Shapiro Results Below:")+qqline(residuals(LM_auto))
plot(density(residuals(LM_auto)), col="black", fg="blue", bg=col_1) + polygon(density(residuals(LM_auto)), col=col_1)+
plot(residuals(LM_auto)~fitted(LM_auto), col="black", fg="blue", pch= 21, bg=col_1, alpha = .7, main="Summary Output-------------->")+
abline(h = c(100, 10, 2, 0, -2, -10, -100), col = c("yellow", "orange", "blue", "black", "blue", "orange", "yellow"), lty = c(5,4,2,1,2,4,5))+
plot(residuals(LM_auto)~xparameter, xlab=X_variable_title, col=col_1, fg="blue", pch= 21, bg=col_1, alpha = .7, main=summary_output, cex.main=.6)+
abline(h = c(100, 10, 2, 0, -2, -10, -100), col = c("yellow", "orange", "blue", "black", "blue", "orange", "yellow"), lty = c(5,4,2,1,2,4,5))'

即使突出显示并作为块运行,所有这些行都可以工作。但是,如果我尝试将它们放入括号中,或将块定义为函数,它们将不会运行(除了生成qqplot),并且R返回一组错误。

{
qqnorm(residuals(LM_auto), col="black", fg="blue", pch= 21, bg=col_1, alpha = .7, sub = shapiro_output, xlab = "Shapiro Results Below:")+qqline(residuals(LM_auto))
plot(density(residuals(LM_auto)), col="black", fg="blue", bg=col_1) + polygon(density(residuals(LM_auto)), col=col_1)+
plot(residuals(LM_auto)~fitted(LM_auto), col="black", fg="blue", pch= 21, bg=col_1, alpha = .7, main="Summary Output-------------->")+
abline(h = c(100, 10, 2, 0, -2, -10, -100), col = c("yellow", "orange", "blue", "black", "blue", "orange", "yellow"), lty = c(5,4,2,1,2,4,5))+
plot(residuals(LM_auto)~xparameter, xlab=X_variable_title, col=col_1, fg="blue", pch= 21, bg=col_1, alpha = .7, main=summary_output, cex.main=.6)+
abline(h = c(100, 10, 2, 0, -2, -10, -100), col = c("yellow", "orange", "blue", "black", "blue", "orange", "yellow"), lty = c(5,4,2,1,2,4,5))
}

错误:

Error in qqnorm(residuals(LM_auto), col = "black", fg = "blue", pch = as.numeric(21),  : 
non-numeric argument to binary operator

In addition: Warning messages:

1: In plot.window(...) : "alpha" is not a graphical parameter

2: In plot.xy(xy, type, ...) : "alpha" is not a graphical parameter

3: In axis(side = side, at = at, labels = labels, ...) : "alpha" is not a graphical parameter

4: In axis(side = side, at = at, labels = labels, ...) : "alpha" is not a graphical parameter

5: In box(...) : "alpha" is not a graphical parameter

6: In title(...) : "alpha" is not a graphical parameter'

qqnorm函数似乎是一个错误,因为只要该行被删除,我就可以在括号内运行我的代码。

为什么21不被识别为数字?或者这真的是问题吗?我尝试过:

pch=as.numeric(21)

但这仍然行不通。

为什么R不能正确地将它们作为一个函数一起读取,因为它可以作为突出显示的块?

任何帮助将不胜感激,谢谢。

r function compiler-errors syntax-error curly-braces
1个回答
0
投票

感谢@MrFlick现在正在运作。他解释说:

在你的行的末尾不应该有加号(+)。 qqnorm通常使用>基本图形(如plot()和axis()等。你不使用+ with base> graphics,这只适用于ggplot图。那个错误信息不是关于pch>参数,那是就在这里,它切断了直线。它是关于两个qqnorm()调用之间的+>。

我删除了(+)s,虽然仍有一些alpha值错误,但它现在作为一个块运行。

© www.soinside.com 2019 - 2024. All rights reserved.