假设我有一个data.frames
列表:
a1<-as.data.frame(1:9)
a2<-as.data.frame(2:10)
a3<-as.data.frame(3:11)
a.list<-list(a1,a2,a3)
现在我想将列表的每个data.frame转换为3 x 3 raster
图层。之后这些图层应该在列表中。
我尝试用lapply
执行此操作,但无法确定问题是什么:
r.list<-lapply(a.list, raster(nrows=3, ncols=3))
答案 0 :(得分:1)
您可能需要先将数据帧转换为矩阵。利用以下事实:您有1列数据帧将它们转换为向量,然后使用matrix
函数:
> rl = lapply(a.list, function(X) raster(matrix(X[,1],nrow=3)))
> rl[[1]]
class : RasterLayer
dimensions : 3, 3, 9 (nrow, ncol, ncell)
resolution : 0.3333333, 0.3333333 (x, y)
extent : 0, 1, 0, 1 (xmin, xmax, ymin, ymax)
coord. ref. : NA
data source : in memory
names : layer
values : 1, 9 (min, max)
您可能希望确保按行或列方式构建栅格 - 使用byrow
arg到matrix
进行调整,或转置矩阵或以其他方式排列栅格。 / p>
答案 1 :(得分:0)
您的问题是您尝试将nrows=3
转换为raster
对象,然后将该新对象应用为对a.list
的每个元素进行操作的函数。
你想要:
lapply(a.list, raster, nrows=3, ncols=3)
或者:
lapply(a.list, function(X) raster(X, nrows=3, ncols=3))