从r中的列表访问SpatialPolygons对象的名称

时间:2015-02-05 17:07:41

标签: r list for-loop sp

我使用下面的代码在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#

}

1 个答案:

答案 0 :(得分: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时,您应该这样做。

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