2016-05-28 7 views
0

私はRで動作するリモートセンシングのプロジェクトに参加しています。私が関心のあるすべての日付のラスタを持つRasterBrick(x)RasterBrickからリストのリストのループを作成するR

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機能を作成するために使用されています(関数内の時間と呼ばれる)に対応する日付、私はそれをしたいと、手動で処理したときに働く機能(zは、私が欲しい画素)との時間セリエ時間セリフに沿った1ピクセルの値を含むtsオブジェクトは、bfastは、私は1つの結果(これは3行目)を欲しがるいくつかの統計を処理していますか?この2つの機能はいずれも私のものではなく、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オブジェクトを強制することはできません答えを得ている、私は問題があると思います私はlapplyがxと同じクラスのオブジェクトのリストを返すと理解していると思う。)RasterBrickクラスが好きではない。

私はさまざまな回避策を試みましたが、いずれも成功していませんでした。これはプログラミングのレベルが低くても驚くことではありません。私は、lapplyがどのように動作しているのか、関数内の関数の使用を完全に理解しているとは思いません。

私を助けてくれてどうもありがとう。 乾杯 ギヨーム

答えて

0

だから、それが誰かの役に立つかもしれない場合には、ここで(それは最終的にはむしろ非常に単純なようです)私は、この問題を解決する方法である、「レンガ」オブジェクトはRasterBrickです:

pixelts<- as.list(as.data.frame(t(as.data.frame(brick)))) 
関連する問題