循环从堆栈导出栅格的代码

时间:2016-07-14 17:03:06

标签: r raster r-raster

我正在尝试编写一个从堆栈中创建和导出栅格的循环。堆栈由我从原始数据帧处理的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'的继承方法。

2 个答案:

答案 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")
}

当您对堆栈进行子集化时,[]运算符会为您提供每个层的该单元格编号的值。这就是你得到错误的原因。 [[]]运算符从堆栈返回指定的层。