我编写了一个包含多个子函数的函数。子功能都与下面的完全一样:
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()
# }
}
因此,我必须手动将值输入到每个函数中。
有谁知道如何摆脱这个警告信息?有什么办法可以将其关闭或否定它的出现?或者,如果您收到此错误消息,您知道如何解决吗?出于某种原因,无论我使用什么语法,它都会产生此错误消息。