0

我编写了一个包含多个子函数的函数。子功能都与下面的完全一样:

Lfunction <- function(mydata, mydata.hex) {

mydata.Lest <- Lest(mydata)

mydata.hex.Lest <- Lest(mydata.hex)

pdf(file="Lplot.pdf")

plot(mydata.Lest, xlim=c(0,200), ylim=c(0,200), main="L Function", xlab="Distance Between Particles (r)", ylab=expression(paste(L(r))), legend = legend(x=165, y=30, c("CSR", "mydata", "mydata.hex"), lty = c(2,1,4), col = c("red", "black","blue"), border = "black"))

plot(mydata.hex.Lest, xlim=c(0,200), ylim=c(0,200), add = TRUE, lty = c(4,2), col = c("blue", "red"))

dev.off()

}

它基本上只是为我的两个点模式(mydata 和 mydata.hex)绘制 F 函数,并将图像作为 PDF 导出到我计算机上的指定文件夹。

出于某种原因,我收到以下错误消息:

!is.null(legend) && legend 中的错误:'x && y' 中的 'y' 类型无效

现在,每次我更改 F、G、J、K、L 或 PCF 函数图上的图例时,我都会收到此消息。我认为这无关紧要,因为它仍然会生成图表,并且在我指定的位置。

问题是这个错误导致我的大函数(它运行大约 10 个函数,如上所示)停止评估。大函数如下所示:

GenPDFs <- function(file_name){
mydata <- CreatePPP(file_name)
mydata.hex <- GenHexLat()
Density(mydata)
Lfunction(mydata, mydata.hex)
LfunctionGDS(mydata, mydata.hex)
Ffunction(mydata, mydata.hex)
FfunctionGDS(mydata, mydata.hex)
Gfunction(mydata, mydata.hex)
GfunctionGDS(mydata, mydata.hex)
Jfunction(mydata, mydata.hex)
Kfunction(mydata, mydata.hex)
KfunctionGDS(mydata, mydata.hex)
PCFfunction(mydata, mydata.hex)
#for (i in 1:30) {
#   dev.off()
#   }
}

因此,我必须手动将值输入到每个函数中。

有谁知道如何摆脱这个警告信息?有什么办法可以将其关闭或否定它的出现?或者,如果您收到此错误消息,您知道如何解决吗?出于某种原因,无论我使用什么语法,它都会产生此错误消息。

4

1 回答 1

0

您能否将函数调用传递给情节的(可能)不存在的“传奇”参数?试试这个:

pdf(file="Lplot.pdf")
  plot(mydata.Lest, xlim=c(0,200), ylim=c(0,200), main="L Function", 
          xlab="Distance Between Particles (r)", ylab=expression(paste(L(r))),  
          lty = c(2,1,4), col = c("red", "black","blue"), border = "black"))
  legend(x=165, y=30, c("CSR", "mydata", "mydata.hex")
  plot(mydata.hex.Lest, xlim=c(0,200), ylim=c(0,200), add = TRUE, 
           lty = c(4,2), col = c("blue", "red"))
dev.off()
于 2012-06-08T20:05:04.497 回答