Попытка построить несколько графиков с использованием » для » в R, но пришлось звонить вручную, почему? — объяснение устранения неполадок

#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 на an x работает нормально. Кроме того, я думаю, что этот with звонок может и не понадобиться.

3. на самом деле это работало с использованием базы R. boxplot() Просто интересно, смогу ли я получить такое же поведение, используя Boxplot()