为 R 中 RasterBrick 的列表列表创建一个循环

Create a loop for a list of list from RasterBrick in R

我正在 R 上进行遥感项目 运行ning。我有一个 RasterBrick(x),其中包含我感兴趣的所有日期的栅格,一个 Time Serie,其中包含相应的日期(在函数中称为时间),以及一个在手动处理时按我想要的方式工作的函数(z 是我想要的像素):

function(x,z)
{
d<-bfastts(as.vector(x[as.numeric(z)]),time,type="16-day")
n<-bfast(d, h=0.15, season="harmonic", max.iter = 1)
l[[z]]<-list(n$output[[1]]$Tt)
}

bfastts 函数用于创建一个 ts 对象,其中包含沿时间序列的一个像素的值,bfast 是另一种处理一些统计数据的方法,我只想要一个结果(这是第三行)? None 这两个函数是我的,它们在 R 包存储库中稳定且可找到。

所以,我想添加 "another level" 功能(抱歉我的词汇量可能不是很精确),这将允许自动 运行 这个功能。我的预期结果是上面函数的结果列表,换句话说,每个像素的时间序列列表。

我试过了(x 仍然是 RasterBrick):

function(x)
{
  z<-nrow(x)*ncol(x)
  j<-last(z[[1]])
  l<-vector('list',length = j)
  index<-function(x)
    {
    d<-bfastts(as.vector(x[as.numeric(z)]),time,type="16-day")
    n<-bfast(d, h=0.15, season="harmonic", max.iter = 1)
    l[[z]]<-list(n$output[[1]]$Tt) # this is to add the newly created element to the list
  }
  lapply(x, FUN='index')
}

但我得到的答案是无法将 S4 对象强制转换为矢量,我想问题出在不喜欢 RasterBrick class 的 lapply 中。 .. 此外,我想要输出列表列表,而不是 RasterBrick 列表(我想我理解 lapply returns 与 x 具有相同 class 的对象列表)。

我已经尝试了不同的变通方法,none 成功了,考虑到我的编程水平很低,这不足为奇,而在我看来,这个最接近我的需要。我不认为我完全理解 lapply 是如何工作的,也不完全理解函数中函数的使用。

如果你能帮助我,非常感谢。 干杯 纪尧姆

所以,如果它对某人有用,这就是我解决这个问题的方法(最终看起来非常简单),"brick" 对象是 RasterBrick:

pixelts<- as.list(as.data.frame(t(as.data.frame(brick))))