spatstat超帧中出现意外行为?

时间:2014-03-18 10:15:01

标签: r spatstat

我正在尝试从包含owin个对象(或任何spatstat对象)的列表超帧中生成spatstat hyperframe,但在rbind.hyperframe命令中使用do.call时遇到意外行为{1}}将列表绑定到更大的hyperframe

library(spatstat)
circles <- list(large = disc(10), medium = disc(5), small = disc(1))

circle.list <- lapply(names(circles), function(k) hyperframe(name = k, circle = circles[[k]]))
circle.list

# [[1]]
# Hyperframe:
#   name circle
# 1 large (owin)

此时列表可以正常工作。 owin个对象分别位于列出的超帧的每个单元格中:

circle.list[[1]]$circle

#window: polygonal boundary
#enclosing rectangle: [-10, 10] x [-10, 10] units  

接下来,我使用do.call命令来rbind超帧:

circle.hyperframe <- do.call(rbind.hyperframe, circle.list)
circle.hyperframe

# Hyperframe:
#    name circle
# 1  large (list)
# 2 medium (list)
# 3  small (list)

现在圈子是列表(它们基本上在spatstat中),但似乎所有这些都绑定在一起:

names(circle.hyperframe[1,]$circle)
# [1] "type"   "xrange" "yrange" "bdry"   "units"  "type"   "xrange" "yrange" "bdry"  
# [10] "units"  "type"   "xrange" "yrange" "bdry"   "units" 

注意一个单元格的重复名称。

我的代码依赖于列表,我非常希望能够将这些列表绑定到一个更大的hyperframe有没有解决这种问题的方法,即如何在没有绑定'circle'列中的单元格的情况下对超帧进行重新绑定?

1 个答案:

答案 0 :(得分:1)

我同意这种行为是出乎意料的,目前我还不知道解释。您的示例有一个简单的解决方案,但我不确定它在您可能需要它的更一般的设置中是否有用:

library(spatstat)
circles <- list(large = disc(10), medium = disc(5), small = disc(1))
circle.hyperframe <- hyperframe(name=names(circles), circle=circles)