试图在R中使用"for"绘制多个图,但必须手动调用,为什么?-故障排除说明



我试图使用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列的网格上绘制图表。

最新更新