通过 `density.ppp` 将参数传递给内核函数
Issue pasing arguments to kernel functions through `density.ppp`
我目前正在集中精力使用 density.ppp
函数,用我自己设计的不同内核函数调用它。
为此,我需要通过 ...
arglist 将一些参数通过 density.ppp
传递给我的内核函数。
在一种情况下这不起作用,即如果我想用边缘校正计算 at = "points"
。
在densitypointsengine
中说
# evaluate edge correction weights at points
if(edge) {
win <- x$window
if(isgauss && is.null(varcov) && win$type == "rectangle") {
# evaluate Gaussian probabilities directly
xr <- win$xrange
yr <- win$yrange
xx <- x$x
yy <- x$y
xprob <-
pnorm(xr[2L], mean=xx, sd=sigma) - pnorm(xr[1L], mean=xx, sd=sigma)
yprob <-
pnorm(yr[2L], mean=yy, sd=sigma) - pnorm(yr[1L], mean=yy, sd=sigma)
edgeweight <- xprob * yprob
} else {
edg <- second.moment.calc(x, sigma=sigma,
kernel=kernel,
scalekernel=scalekernel,
what="edge", varcov=varcov)
edgeweight <- safelookup(edg, x, warn=FALSE)
}
所以这里对 second.moment.calc
的调用不支持隐藏在 ...
中的额外参数。
我想知道这可能是一个错误还是故意这样做的。
这是一个错误。 second.moment.calc
.
的调用中应该有一个 ...
spatstat
的开发版会尽快修复。
我目前正在集中精力使用 density.ppp
函数,用我自己设计的不同内核函数调用它。
为此,我需要通过 ...
arglist 将一些参数通过 density.ppp
传递给我的内核函数。
在一种情况下这不起作用,即如果我想用边缘校正计算 at = "points"
。
在densitypointsengine
中说
# evaluate edge correction weights at points
if(edge) {
win <- x$window
if(isgauss && is.null(varcov) && win$type == "rectangle") {
# evaluate Gaussian probabilities directly
xr <- win$xrange
yr <- win$yrange
xx <- x$x
yy <- x$y
xprob <-
pnorm(xr[2L], mean=xx, sd=sigma) - pnorm(xr[1L], mean=xx, sd=sigma)
yprob <-
pnorm(yr[2L], mean=yy, sd=sigma) - pnorm(yr[1L], mean=yy, sd=sigma)
edgeweight <- xprob * yprob
} else {
edg <- second.moment.calc(x, sigma=sigma,
kernel=kernel,
scalekernel=scalekernel,
what="edge", varcov=varcov)
edgeweight <- safelookup(edg, x, warn=FALSE)
}
所以这里对 second.moment.calc
的调用不支持隐藏在 ...
中的额外参数。
我想知道这可能是一个错误还是故意这样做的。
这是一个错误。 second.moment.calc
.
...
spatstat
的开发版会尽快修复。