retainedges[dat$seg] 错误:下标类型无效 'list'

Error in retainedges[dat$seg] : invalid subscript type 'list'

我正在对线性网络上观察到的点模式执行 linearK 函数,但出现以下错误 Error in retainedges[dat$seg] : invalid subscript type 'list' 我不明白这是什么意思,我应该如何纠正它。

在回溯调用中,我得到以下信息

> traceback()
4: thinNetwork(x, retainvertices = subi)
3: countends(L, X[-j], D[-j, j], toler = toler)
2: linearKengine(X, r = r, ..., denom = denom, correction = correction, 
       ratio = ratio)
1: linearK(sl2)

有人可以帮助我了解此错误的含义以及我该如何更正它。

谢谢。

您的网络有点问题,因为它已断开连接。它有一个非常大的组件,有 3755 个顶点和 5593 条线,然后是 5 个只有 2 或 3 个顶点和 1 或 2 条线的小组件,它们没有连接到任何其他东西。在您的示例中,您在这个大网络中只有两个点(据我所知,这两个点都发生在大组件中)。我们可能会在 spatstat 的未来版本中处理这个问题,但现在我建议您只丢弃小的空组件。然后我认为 linearK 按您的示例的预期工作(尽管我怀疑您是否从 2 点的模式中找到了有趣的信息!)。

要识别线性网络的连接组件,请使用 connected.linnet 和参数 what = "components" 然后您将获得连接组件列表,您可以使用大连接组件定义新的 lpp 在连接的 linnet 上。对于您的示例,您可以执行类似的操作(注意组件编号 1 是主要组件):

comp <- connected(as.linnet(sl2), what = "comp")
sl2new <- lpp(as.ppp(sl2), comp[[1]])