【问题标题】:Accessing the name of a SpatialPolygons object from a list in r从 r 中的列表访问 SpatialPolygons 对象的名称
【发布时间】:2015-04-05 15:50:36
【问题描述】:

我使用以下代码在 r 中创建了 SpatialPolygons 对象列表,并希望通过 for 循环运行每个多边形。我想访问我分配给每个对象的原始名称,以便可以在 for 循环中使用它。这应该很容易,但我不知道如何使用 SpatialPolygons 对象来完成,因为一旦加载到将其链接到此原始名称的 for 循环中,似乎没有任何信息存储在对象中。任何帮助都会很棒。谢谢!

oblist = c(p1,p2,p3,p4)

for(i in 1:length(oblist)){
  obs = oblist[[i]]
  obj.nm = #some way to obtain the original object name i.e. p1 for oblist[[1]]
  …#etc#

}

【问题讨论】:

    标签: r list for-loop sp


    【解决方案1】:

    使用带有命名组件的列表,而不是向量:

    > oblist = list(p1=p1, p2=p2, p3=p3, p4=p4)
    > for(i in 1:length(oblist)){
    +   print(names(oblist)[i])
    +   print(oblist[[i]])
    + }
    

    请注意,变量的名称应该很少引起代码的兴趣。不鼓励这种内省。很少有语言允许它。一个变量不应该问它的名字是什么。只有在极少数情况下,例如当您执行 plot(foo,bar) 并且您希望轴标记为 foobar 时,您应该这样做。

    最好有另一个变量来存储对象元素的名称(这就是上面代码的工作方式,通过将它们的名称存储在列表的名称属性中)。这也让您拥有不是有效变量名的名称。

    【讨论】:

    • @Spacedman:太好了。谢谢!正是我想要的。如此明显,我不敢相信我错过了!
    猜你喜欢
    • 2018-04-04
    • 2021-08-20
    • 1970-01-01
    • 1970-01-01
    • 2020-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多