为 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))))
我正在 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))))