【发布时间】:2019-03-16 18:11:58
【问题描述】:
我有 30 个数据集,它们组合在一个数据列表中。我想通过L function 以及随机化测试来分析空间点模式。代码如下。
第一个代码适用于单个数据集(data1),但是一旦将其应用于具有lapply() 函数的数据集列表,如第二个代码所示,它会给我一个非常长的错误,就像这样,
"Kcross(X, i, j, ...) 中的错误:没有点有标记 i = Acoraceae 信封引擎错误(X = X,fun = fun,simul = simrecipe,nsim = nsim, : 超过最大错误数"
谁能告诉我第二个代码有什么问题?
grp <- factor(data1$species)
window <- ripras(data1$utmX, data1$utmY)
pp.grp <- ppp(data1$utmX, data1$utmY, window=window, marks=grp)
L.grp <- alltypes(pp.grp, Lest, correlation = "Ripley")
LE.grp <- alltypes(pp.grp, Lcross, nsim = 100, envelope = TRUE)
plot(L.grp)
plot(LE.grp)
L.LE.sp <- lapply(data.list, function(x) {
grp <- factor(x$species)
window <- ripras(x$utmX, x$utmY)
pp.grp <- ppp(x$utmX, x$utmY, window = window, marks = grp)
L.grp <- alltypes(pp.grp, Lest, correlation = "Ripley")
LE.grp <- alltypes(pp.grp, Lcross, envelope = TRUE)
result <- list(L.grp=L.grp, LE.grp=LE.grp)
return(result)
})
plot(L.LE.sp$LE.grp[1])
【问题讨论】:
-
可能是您列表中的一个或多个数据集存在影响您的流程的数据问题。尝试将
function包裹在tryCatch中。如果您对每个数据帧手动运行第一个代码,它是否可以正常工作? -
是的,它适用于每个数据帧。实际上,我成功地将其他许多功能应用于此数据列表。但是当我将最后一个函数(带信封)添加到这个 lappy() 函数时,就会出现这个错误。所以我猜代码的最后一个函数有问题
-
在第一个代码块中,您使用
q1$utmY表示ripras,但不在lapply中。 -
对不起,实际上 q1 是 data1。在我的原始代码中,我命名为 q1。在这里,为了更清楚,我将该名称转换为 data1。
-
在第一个代码中,您在
alltypes的第二次调用中使用 argnsim = 100,但在lapply中不使用。
标签: r function lapply spatstat