#r #for-loop #plot
Вопрос:
Я пытался построить несколько коробочных диаграмм для разных переменных моих данных, используя a for
. Я могу создавать сюжеты, но это происходит только вручную. Так, например, я выполню for
цикл, и будет создан один график, затем мне придется делать это снова и снова и т. Д. Что в первую очередь противоречит цели того, чтобы я делал for
петлю. Мне было интересно, является ли это поведением программного обеспечения или я делаю что-то не так при создании сюжетов? Вот код для воспроизведения вещей:
gt; 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"))
gt; 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 в качестве своей среды разработки. Я также использовал Boxplot()
функцию из car
пакета
Комментарии:
1. В вашем
with
нет необходимости. Кроме того, попробуйте распечатать график в цикле:print(Boxplot(...))
.2. Похоже
with
, это было причиной проблем. Спасибо
Ответ №1:
При использовании R-GUI по умолчанию каждая итерация цикла будет перезаписывать отображение графика, поэтому будет видна только последняя. При использовании RStudio будут созданы все 5 участков, и вы сможете перемещаться между ними на панели «Участок».
Или, если вы хотите увидеть все пять сразу, вы можете использовать par
функцию, чтобы указать R для построения нескольких диаграмм бок о бок.
Job_Proficiency lt;- 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 столбцов.
Комментарии:
1. Я собираюсь изложить это в своем вопросе, но я использовал R-Studio. На самом деле я тоже использовал эту
par()
функцию. Я не думал, что это будет иметь отношение к делу. Но они появлялись только один раз, когда я делал это по одному за раз. Я просто заметил, что это потому, что я использовалBoxplot()
функцию изcar
пакета. Но он должен вести себя так же.2. Разве невозможно перемещаться с помощью стрелок назад/вперед на панели графика? Можете ли вы подтвердить, используете ли вы базовую
boxplot
функцию R или действительно вызываемую функциюBoxplot
? Запуск кода сboxplot
и изменениеy
на anx
работает нормально. Кроме того, я думаю, что этотwith
звонок может и не понадобиться.3. на самом деле это работало с использованием базы R.
boxplot()
Просто интересно, смогу ли я получить такое же поведение, используяBoxplot()