I have multiple rasters and the idea is to create a column for each layer inside a data frame, but I'd like to use mydf$layername
or mydf[[layername]]
operations in a loop. In my example:
library(raster)
Create an empty data frame:
mydf<-NULL
3 layers simulation:
## Create a simulated RBG rasters
r <- raster(nc=30, nr=30)
r <- setValues(r, round(runif(ncell(r))* 255))
g <- raster(nc=30, nr=30)
g <- setValues(r, round(runif(ncell(r))* 255))
b <- raster(nc=30, nr=30)
b <- setValues(r, round(runif(ncell(r))* 255))
rgb<-stack(r,g,b)
Population of data frame(mydf
) with each layer information and use "names"
as a variable name
for (i in 1:length(rgb@layers)){
mydf$assign(paste0(rgb[[i]]@layers)) <- as(as.im(rgb[[i]]), "SpatialGridDataFrame")$v
}
Error in mydf$assign(paste0(rgb[[i]]@data@names)) <- as(as.im(rgb[[i]]), :
or
for (i in 1:length(rgb@layers)){
mydf[[assign(paste0(rgb[[i]]@layers))]] <- as(as.im(rgb[[i]]), "SpatialGridDataFrame")$v
}
Error in paste0(rgb[[i]]@layers) :
There is any solution for this mydf$assign(paste0(rgb[[i]]@layers))
or mydf[[assign(paste0(rgb[[i]]@layers))]]
operations?