【问题标题】:Looping code to export raster from stack循环代码以从堆栈中导出栅格
【发布时间】:2016-11-17 17:19:43
【问题描述】:

我正在尝试编写一个循环来从堆栈中创建和导出栅格。该堆栈由我从原始数据框中处理的 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")
}

但是,我收到以下错误:

(function (classes, fdef, mtable) 中的错误:无法找到 用于签名“numeric”的函数“raster”的继承方法。

【问题讨论】:

  • raster() 函数从何而来?它是一个包还是你写的?看看代码就好了。

标签: r raster r-raster


【解决方案1】:

您也可以使用bylayer 参数并在一行中完成:

writeRaster(animalstack, "animal_ID", bylayer=TRUE, format="HFA")

【讨论】:

    【解决方案2】:

    我认为您正在寻找这样的东西:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-26
      • 1970-01-01
      • 2016-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多