在创建基本图的R循环中的plot.window错误

时间:2013-09-05 16:50:48

标签: r loops plot

我为没有为这个问题生成伪数据而道歉,但我认为我面临的问题对于本网站上的大多数非新手都是基本的。我正在尝试创建一个循环,为z变量的每个值绘制x和y的散点图。

x=rnorm(n=50)
y=rnorm(n=50)
z<-rep(c(1,2,3,4,5),10)
dataset <-cbind(x,y,z)
Dataset<-as.data.frame(dataset)
attach(Dataset)
jpeg()
z <-Dataset$z[1:5]
for(i in 1:5) {
    y<-y[z==i]
    x <-x[z==i]
    ARMAXpath<-file.path("C:", "Desktop", paste("myplot_", z[i], ".jpg", sep="")) 
    jpeg(file = ARMAXpath)
    TheTitle = paste("Scatter Plots", z[i])
    plot.new()
    plot.window(xlim=c(0,1), ylim=c(5,10))
    plot(y,x)
    dev.off()
}
detach(Dataset)

无论我做什么,我都会遇到同样的plot.window错误。我运行和不使用附加代码。我在有plot.window的情况下运行它。我也把它移到了循环内外。

Error in plot.window(...) : need finite 'xlim' values
In addition: Warning messages:
1: In min(x) : no non-missing arguments to min; returning Inf
2: In max(x) : no non-missing arguments to max; returning -Inf
3: In min(x) : no non-missing arguments to min; returning Inf
4: In max(x) : no non-missing arguments to max; returning -Inf

我的问题是如何通过我的数据集(即区域)中的第三个变量生成两个时间序列的图表,将输出写入文件夹,因为我上面的尝试很少?

2 个答案:

答案 0 :(得分:0)

为什么不:将所有三个情节调用合并为:

 plot(y,x, xlim=c(0,1), ylim=c(5,10))

答案 1 :(得分:0)

一些替代代码,使用@Ddin的评论:

x=rnorm(n=50)
y=rnorm(n=50)
z<-rep(c(1,2,3,4,5),10)
Dataset<-data.frame(x=x,y=y,z=z)

my.plot <- function(x,y,z){
    ARMAXpath<-file.path("C:", "Desktop", paste0("myplot_", z, ".jpg"))
    jpeg(file = ARMAXpath)
    plot(y,x, xlim=c(0,1), ylim=c(5,10))
    dev.off()
}

by(Dataset, Dataset$z, function(d) my.plot(d$x,d$y,unique(d$z)))