2016-07-12 245 views
1

我想寫一個循環,從三維數組中提取一個表,並將其作爲列順序寫入數據框。組合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等) 但只有結合在for循環輸出n的最後一次運行= 1:60

+0

我想你在那裏的功能對R來說不是原始的。你能告訴我們它們來自哪裏的包嗎? –

+0

我正在使用包** ncdf4 ** – Dylan

+1

使用netCDF4文件您還可以爲測試的外觀創建一個示例嗎?我無法重新創建您的問題,因爲我無法訪問該.nc文件。 –

回答

1

您的h尚未使用;換句話說沒用。您可能需要在n的每個步驟中將變量ensemble添加到您的lonlat數據中。所以你的代碼應該是lonlat <- data.frame(cbind(lonlat, ensemble[n]))

+0

該解決方案完美運作。我想知道你是否可以擴大無用。我是一個新的用戶,我沒有完全理解r中對象的一些動態。 – Dylan

+1

@Dylan每次'for循環'執行時都是'重新分配'對象'h'。因此,它在自己的「寫作」上,因此爲什麼只留下最後一個輸出「n = 60」 – amwill04