2014-02-20 93 views
0

我是r新手,希望能够使用循环函数创建图形。在循环中创建图形r

我希望创建288个图形,并且数据是堆叠格式。每个图形都是由30行数据创建的,所以我的数据总共有288 * 30 = 8640行。

我成功地创建的第一曲线图使用此代码 -

# 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循环”命令(见下文),但无法使其工作。

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

我真的很感谢任何帮助,谢谢!

+0

你只是拷贝在同一行循环?你应该改变各种'[1:30]'到'[startRow:endRow]' – nico

+4

whatcha要用288个图表做什么? – rawr

+0

你的循环从1:288运行,用给定的数字生成变量'i',但我没有看到我在你的循环代码中的任何地方。我也没有看到你更新每个循环的startRow。你真的需要做两个中的一个。现在,这个循环只产生了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