2015-02-05 43 views
0

我使用下面的代码创建了r中的SpatialPolygons对象列表,并希望通过for循环运行每个多边形。我想访问我分配给每个对象的原始名称,以便它可以在for循环中使用。这应该是非常简单的,但我无法弄清楚如何用SpatialPolygons对象来做到这一点,因为一旦加载到将该链接到该原始名称的for循环中,就没有存储在该对象中的信息。任何帮助都会很棒。谢谢!从列表中访问SpatialPolygons对象的名称

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

使用列表由指定组件,而不是一个向量:

> 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属性中)。这也可以让你的名字不是有效的变量名。

+0

@ Spacedman:非常好。谢谢!正是我在找的东西。很明显,我不相信我错过了它! – jjulip 2015-02-05 20:02:15

相关问题