列表元素的名称而不改变它们的类型

Names for the elements of list without change the type of them

我确定这是一个基本问题,但我找不到正确的方法。我有一个 SpatialPolygonsDataFrames 列表。我希望列表中的每个元素都具有其 id.I 尝试做的名称

for (i in lenght(mylist)){
  mylist[i]=paste(mylist[[i]]@data$id)
}
#mylist is my list of SpatialPolygonsDataFrames

但在此之后我有一个字符列表(ID)而不是一个 SpatialPolygonsDataFrames 列表。如何将我的元素保留为 SpatialPolygonsDataFrames 并使用它们的 ID 命名?

使用您的代码,您将覆盖列表的内容,而不是列表的名称,实际上您的列表变成了 ID 列表(转换为字符,因为列表的名称只能形成按字符串)。

如果你想编辑一个列表的名字你可以使用函数names(mylist),所以你可以这样尝试:

for (i in 1:length(mylist)) { #for each element of your list
  names(mylist)[i]=mylist[[i]]@data$id #edit the names vector at position i
}

此外,您不需要使用 paste 功能:您只有一个要用作名称的 ID,不需要粘贴多个元素。