簡體   English   中英

為R中的RasterBrick創建列表列表循環

[英]Create a loop for a list of list from RasterBrick in R

我正在一個在R上運行的遙感項目中。我有一個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是另一種處理某些統計信息的統計,我只需要一個結果(這是第三行)? 這兩個函數都不是我的,它們在R軟件包存儲庫中是穩定且可發現的。

因此,我想添加功能的“另一個級別”(抱歉,我的詞匯可能不太准確),這將允許自動運行此功能。 我的預期結果是上面函數結果的列表,換句話說就是每個像素時間序列的列表。

我已經試過了(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類的lapply上。此外,我想要輸出中的列表列表,並且不是RasterBrick的列表(我想我理解lapply返回的對象列表與x相同)。

我嘗試了不同的解決方法,但都沒有成功,這不足為奇,因為我的編程水平很低,而在我看來,這是最接近我需要的方法。 我想我既不完全了解lapply的工作原理,也不完全理解函數中函數的用法。

如果可以幫助我,非常感謝。 干杯紀堯姆

因此,以防萬一它對某人有用,這是我解決此問題的方法(最終看起來很簡單),“磚”對象是RasterBrick:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM