2016-07-12 11 views
1

3次元配列からテーブルを抽出し、それをデータフレームに列として順次書き込むループを作成します。forループ出力の組み合わせ

私が持っているコードは、これまで=

library(ncdf4) 

test <- nc_open("NorESM_TREFHT_cont_mem1-60_2006-2099.nc") 
temp <- ncvar_get(test, "TREFHT", count = c(144,96,60,1)) 
drop(temp) 
lat<- ncvar_get(test, "lat") 
lon <- ncvar_get(test,"lon") 
lonlat <- expand.grid(lon, lat) 
for (n in 1:60) { 
member <- array(temp[1:144,1:96,n]) 
ensemble <- as.vector(member) 
h <- data.frame(cbind(lonlat, ensemble[n])) 
} 

は、現在のコードが (N = 1,2などのために)ループせずに動作しますが、唯一のnのループの出力の最後の実行を兼ね備えています1:60

+0

Rには基本的ではない機能があると思いますが、どこから来たのか教えてください。 –

+0

パッケージを使用してnetCDF4ファイルで作業しています** ncdf4 ** – Dylan

+1

どのようなテストのようなサンプルを作成できますか?私はその.ncファイルへのアクセス権がないため、問題を再現できません。 –

答えて

1

hはまだ使用されていません。言い換えれば役に立たない。 nの各ステップで変数ensemblelonlatデータに追加することをお勧めします。したがって、あなたのコードはlonlat <- data.frame(cbind(lonlat, ensemble[n]))になるはずです。

+0

このソリューションは完全に機能しました。私はあなたが役に立たない時に拡大できるかどうか疑問に思っていた。私は新しいrユーザです。rのオブジェクトのダイナミクスの一部を完全に理解していません。 – Dylan

+1

@Dylan 'forループ 'が実行されるたびに、オブジェクト' h'が 're-assigning'されます。したがって、それはそれ自身の上に「書く」ため、なぜあなたは最後の出力 'n = 60'だけ残っているのですか? – amwill04

関連する問題