2014-02-20 2 views
0

Я новичок в r и надеюсь получить некоторую помощь в использовании функции цикла для создания графиков.Создание графиков в цикле в r

Надеюсь создать 288 графиков, а данные в сложном формате. Каждый график создается из 30 строк данных, поэтому в целом у меня есть 288 * 30 = 8640 строк в моих данных.

мне удалось создать первый график с помощью этого code-

# setting range and table 
xrange <- range(0,300) 
    yrange <- range(1,15) 
    plot(xrange, yrange, type="n", xlab="Time in seconds", ylab="Performance") 

# adding lines 
lines(df$TimeStamp0[1:30],df$Pur[1:30], type="o", pch=4, col="red") 
lines(df$TimeStamp0[1:30],df$Yel[1:30], type="o", pch=4, col="blue") 
lines(df$PartTimeStamp0[1:30],df$PartPur[1:30], type="o", pch=20, col="green") 
lines(df$PartTimeStamp0[1:30],df$PartYel[1:30], type="o", pch=20, col="orange") 

Есть четыре линии для четырех различных компонентов производительности. Я надеюсь создать цикл, чтобы получить этот синтаксис для генерации графика каждые 30 строк по всему набору данных. Я попробовал команду «for loop» (см. Ниже), но не смог заставить ее работать.

for(i in 1:288) { 
    startRow=1, endRow=startRow+29 
    #pasted the above graph creation syntax 
    } 

Я бы очень признателен за любую помощь, спасибо!

+0

Вы просто копируя те же строки в цикл? Вы должны изменить различные '[1:30]' на '[startRow: endRow]' – nico

+4

, что вы собираетесь делать с 288 графиками? – rawr

+0

ваш цикл работает от 1: 288, генерируя переменную i с заданным номером, но я не вижу нигде в вашем коде цикла. Я также не вижу, как вы обновляете свой цикл startRow каждый цикл. Вам действительно нужно сделать один из двух. Прямо сейчас этот цикл генерирует i 288 раз, ничего не делает с ним и делает один и тот же график снова и снова. – TomR

ответ

2

Поскольку вам нужен график каждые 30 строк, вы не хотите использовать диапазон 1: 288; вместо этого, вы должны использовать:

for(i in seq(1, 8640, by=30){ 

Кроме того, вы должны изменить «1» в «StartRow = 1» до «я», т.е.

startRow=i 
endRow=startRow+29 
+0

Да, вы правы насчет ошибки в моем коде цикла, все работает сейчас. СПАСИБО ТАК МНОГО !! :) – user3334446

+0

@ user3334446: вы должны отметить ответ как принятый, если он решит вашу проблему. – nico

Смежные вопросы