从 r 中的列表访问 SpatialPolygons 对象的名称
Accessing the name of a SpatialPolygons object from a list in r
我使用以下代码在 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#
}
使用包含命名组件的列表,而不是向量:
> 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)
并且您希望轴标记为 foo
和 bar
时,您才应该这样做。
最好有另一个变量来存储对象元素的名称(这就是上面代码的工作方式,通过将它们的名称存储在列表的名称属性中)。这也让您可以使用不是有效变量名的名称。
我使用以下代码在 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#
}
使用包含命名组件的列表,而不是向量:
> 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)
并且您希望轴标记为 foo
和 bar
时,您才应该这样做。
最好有另一个变量来存储对象元素的名称(这就是上面代码的工作方式,通过将它们的名称存储在列表的名称属性中)。这也让您可以使用不是有效变量名的名称。