我试图使用for
将多个箱图绘制到数据的不同变量。我可以得到要制作的情节,但这只是手动发生的。例如,我将执行for
循环,然后创建一个图,然后我必须一次又一次地执行,等等。这首先违背了我创建for
循环的目的。我想知道这是软件行为,还是我在创作情节时做错了什么?这是重现事物的代码:
> dput(head(Job_Proficiency, 10))
structure(list(job_proficiency = c(88, 80, 96, 76, 80, 73, 58,
116, 104, 99), T_1 = c(86, 62, 110, 101, 100, 78, 120, 105, 112,
120), T_2 = c(110, 97, 107, 117, 101, 85, 77, 122, 119, 89),
T_3 = c(100, 99, 103, 93, 95, 95, 80, 116, 106, 105), T_4 = c(87,
100, 103, 95, 88, 84, 74, 102, 105, 97)), row.names = c(NA,
-10L), class = c("tbl_df", "tbl", "data.frame"))
> for (i in seq(along = Job_Proficiency)){
+ with(data = Job_Proficiency, Boxplot(y = Job_Proficiency[i], xlab = names(Job_Proficiency)[i]))
+ }
因此,如前所述,为了生成图形,我必须手动执行for
循环。有没有办法纠正这个问题?我曾设想过执行一次for
循环,然后生成所有五个图。
编辑:为了澄清,我使用R-Studio作为我的IDE。我还使用了car
包中的Boxplot()
函数
如果使用R-GUI,默认情况下循环的每次迭代都将覆盖绘图显示,因此只有最后一次可见。如果使用RStudio,将创建所有5个绘图,您可以在绘图窗格中在它们之间导航。
或者,如果您想同时看到所有五个图表,可以使用par
函数告诉R并排绘制多个图表。
Job_Proficiency <- structure(list(job_proficiency = c(88, 80, 96, 76, 80, 73, 58,
116, 104, 99), T_1 = c(86, 62, 110, 101, 100, 78, 120, 105, 112,
120), T_2 = c(110, 97, 107, 117, 101, 85, 77, 122, 119, 89),
T_3 = c(100, 99, 103, 93, 95, 95, 80, 116, 106, 105), T_4 = c(87,
100, 103, 95, 88, 84, 74, 102, 105, 97)), row.names = c(NA,
-10L), class = c("tbl_df", "tbl", "data.frame"))
par(mfrow = c(1, 5))
for (i in seq(along = Job_Proficiency)){
boxplot(x = Job_Proficiency[i], xlab = names(Job_Proficiency)[i])
}
par(mfrow = c(1, 5))
基本上告诉它在1行5列的网格上绘制图表。