У меня есть список многих SpatialLinesDataFrames
. Я хочу добавить столбец к каждой SLDF, который имеет идентификатор, эквивалентный идентификатору индекса списка (т.е. каждая строка в каждом новом столбце SLDF будет иметь один и тот же идентификатор). Мне бы хотелось, чтобы решение работало с любым видом sp
объекта Spatial DataFrame (полигоны, точки и т. Д.).
Основываясь на решении для простых data.frames ( Назначьте уникальный идентификатор каждому элементу data.frame в списке ), я попытался сделать это с помощью следующего примера кода:
library(raster)
#create list of single-feature `SpatialLineDataFrame`
l1 <- cbind(c(0,3), c(0,3))
l2 <- cbind(c(0, 13), c(0, 1))
l3 <- cbind(c(0, 24), c(0,22.5))
l4 <- cbind(c(0, 1), c(0,13))
l5 <- cbind(c(0, 6), c(0,6))
Sldf <- spLines(l1, l2, l3, l4, l5, attr=data.frame(lineID=1:5))
#make individual list elements
sldfl <- list()
sldfl[[1]] <- Sldf[1,]
sldfl[[2]] <- Sldf[2,]
sldfl[[3]] <- Sldf[3,]
sldfl[[4]] <- Sldf[4,]
sldfl[[5]] <- Sldf[5,]
#attempt to add new column with unique index id
newlist <- Map(cbind,sldfl, unique.id = (1:length(sldfl)))
Я хочу, чтобы имя столбца было «unique.id» и одинаково для всех элементов, но результаты зависят от элемента, а не от имени, которое я указываю (т. Е. X1L, X2L и т. Д.) Следующим образом:
[[1]]
class : SpatialLinesDataFrame
features : 1
extent : 0, 3, 0, 3 (xmin, xmax, ymin, ymax)
coord. ref. : NA
variables : 2
names : lineID, X1L
value : 1, 1
[[2]]
class : SpatialLinesDataFrame
features : 1
extent : 0, 13, 0, 1 (xmin, xmax, ymin, ymax)
coord. ref. : NA
variables : 2
names : lineID, X2L
value : 2, 2
Но я хочу это:
[[1]]
class : SpatialLinesDataFrame
features : 1
extent : 0, 3, 0, 3 (xmin, xmax, ymin, ymax)
coord. ref. : NA
variables : 2
names : lineID, unique.id
value : 1, 1
[[2]]
class : SpatialLinesDataFrame
features : 1
extent : 0, 13, 0, 1 (xmin, xmax, ymin, ymax)
coord. ref. : NA
variables : 2
names : lineID, unique.id
value : 2, 2