Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 导致对象消失的函数_R_Function_Variables_Object_Spatstat - Fatal编程技术网

R 导致对象消失的函数

R 导致对象消失的函数,r,function,variables,object,spatstat,R,Function,Variables,Object,Spatstat,这是我遇到的一个非常奇怪的情况。基本上,我试图将累积分布函数拟合到数据的G函数中。这样做之后,我想绘制模型和原始数据,并将其输出为PDF。我将允许代码解释(简单地复制和粘贴): 出现以下错误: Error in eval(expr, envir, enclos) : object 'new_r' not found 我很困惑。我在这方面工作了很长一段时间,就是想不出解决这个问题的办法。PDF已输出,但已损坏,无法打开。我不知道为什么new\u r会“消失”,但这样做会导致所有绘图操作停止。显然

这是我遇到的一个非常奇怪的情况。基本上,我试图将累积分布函数拟合到数据的G函数中。这样做之后,我想绘制模型和原始数据,并将其输出为PDF。我将允许代码解释(简单地复制和粘贴):

出现以下错误:

Error in eval(expr, envir, enclos) : object 'new_r' not found
我很困惑。我在这方面工作了很长一段时间,就是想不出解决这个问题的办法。PDF已输出,但已损坏,无法打开。我不知道为什么
new\u r
会“消失”,但这样做会导致所有绘图操作停止。显然,
new\u r
是函数的局部
ModelFit
,但它似乎也是函数中某些区域的局部


任何帮助都将不胜感激。

你在那里做了很多隐含的事情。。。我建议写得更明确一些


具体来说,
mydata.Gest$r我无法复制。您确定第二个块中的代码与在R中执行的代码完全相同吗?我肯定是的。在第二个块中,我所做的更改是一个函数定义(现在包含第一个块中的大部分代码),然后是对该函数的调用。我非常感谢任何帮助,因为我正试图在linux服务器上以批处理模式运行一个大型程序,而这一小段代码给我带来了很多痛苦。忽略上面的评论-我发现,只有在我已经在同一空间运行了前一个工作代码时,它才会抛出错误。Justin的回答如下:,放入mydata.Gest$r非常好的解决方案,贾斯汀,谢谢!然而,我仍然对我们没有指出错误发生的位置感到不安。我使用过我以前发布的流程,我从来没有遇到过任何问题。我以前的用法与我发布的用法之间的区别在于,其他用法都不涉及
nls
。我看到发生的唯一可能的故障是,在使用
new\u r
创建
GvsR\u数据帧
后,可能
new\u r
对象在被
nls
使用后被删除。我很好奇,想弄清这个问题的真相。我认为这更多地与
plot.Gest
的编写方式有关。就是在那个电话里你遇到了问题。您可以在plot调用的其他部分使用
new\r
,但公式部分似乎没有超出数据参数的局部范围。我以前使用过
plot.Gest
的上下文中,使用的自变量是plot函数之外的对象,与
mydata.Gest
无关。这就是我认为它与
nls
有关的原因。您可以在函数中添加行,如
print(head(new_r))
来帮助解决这个问题。您还可以使用
debugonce(ModelFit)
逐步完成其作用域内的函数。
library(spatstat)

data(swedishpines)

mydata <- swedishpines

ModelFit <- function(mydata) {

mydata.Gest <- Gest(mydata)

Gvalues <- mydata.Gest$rs

count <- (which(Gvalues == 1))[1]

new_r <- seq(1/count, length(Gvalues)/count, by = 1/count)

GvsR_dataframe <- data.frame(G <- Gvalues, R <- new_r)

themodel <- suppressWarnings(nls(G ~ pnorm(R, mean, sd), data = GvsR_dataframe, start = list(mean=0.4, sd=0.2), trace = FALSE))

pdf(file = "ModelPlot.pdf")

plot(mydata.Gest, cbind(rs, theo) ~ new_r, lty = c(1, 2), col = c("black", "red"), xlim = c(0, max(new_r)), ylim = c(0,1), main = paste("Model-fitting for G Function \n Mean = ",as.numeric(coef(themodel)[1]),"\n Standard Deviation = ",as.numeric(coef(themodel)[2]), sep=''), ylab = "G(r)", xlab = "Distance Between Particles (r)", legend = NULL)
lines(new_r, predict(themodel), lty = 2, col = "blue")
legend("bottomright", c("CSR", "Swedish Pines", "Normal Probability \n Density Function"), lty = c(2, 4, 1, 2), col = c("red", "black", "blue"), bg = 'grey', border = 'black')

graphics.off()

}

ModelFit(mydata)
Error in eval(expr, envir, enclos) : object 'new_r' not found
data.frame(x<-1:10, y<- 1:10)
ls()
data.frame(x=1:10, y=1:10)
ls()