循环中的 plot.window 错误,用于 R 创建基本绘图



我很抱歉没有为这个问题生成伪数据,但我认为我面临的问题是本网站上大多数非新手的基本问题。我正在尝试创建一个循环,为 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

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

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

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

一些替代代码,使用@DWin的注释:

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)))

最新更新