我正在尝试编写一个从堆栈中创建和导出栅格的循环。堆栈由我从原始数据帧处理的20个动物的数据组成(例如animal$ID
)这是我到目前为止编写的代码。
uni<-unique(animal$ID)
for (i in 1:length(uni)){
subtest<- animalstack [i]
ras<-raster(subtest[[1]])
values(ras)<- values(subtest[[1]])
outrasname<- paste("DIRECTORY", paste('animal_ID',
as.character(uni[l]),sep="_"),sep="/")
writeRaster(ras, outrasname, format="HFA")
}
但是,我收到以下错误:
(函数(classes,fdef,mtable)中的错误:无法找到 用于签名'&#34;数字&#34;'的函数'raster'的继承方法。
答案 0 :(得分:1)
您也可以使用bylayer
参数并在一行中执行:
writeRaster(animalstack, "animal_ID", bylayer=TRUE, format="HFA")
答案 1 :(得分:0)
我认为你正在寻找这样的东西:
uni<-unique(animal$ID)
for (i in 1:length(uni)){
ras <- subtest[[i]]
outrasname<- paste("DIRECTORY", paste('animal_ID',
as.character(uni[i]),sep="_"),sep="/")
writeRaster(ras, outrasname, format="HFA")
}
当您对堆栈进行子集化时,[]
运算符会为您提供每个层的该单元格编号的值。这就是你得到错误的原因。 [[]]
运算符从堆栈返回指定的层。