# 各輸入檔案乃採用原發問者上傳之 csv 和 nc 檔
library(magrittr)
library(data.table)
library(ncdf4)
# 各種讀資料
analog.indices <-
fread("HIRAM_WRF_analog.indices(1979-2005).csv", col.names = c("day", "i1", "i2"))
analog.weights <-
fread("HIRAM_WRF_weights(1979-2005).csv", col.names = c("day", "w1", "w2"))
HIRAM_WRF_data <- nc_open("197901-200512_pr_axis_time_domain.nc")
hiram_wrf_lon <- ncvar_get(HIRAM_WRF_data, "lon")
hiram_wrf_lat <- ncvar_get(HIRAM_WRF_data, "lat")
hiram_wrf_time <- ncvar_get(HIRAM_WRF_data, "time")
hiram_wrf_pr <- ncvar_get(HIRAM_WRF_data, "pr")
# 創新的三維 array
pr.new <-
array(
NA_real_,
dim = c(dim(hiram_wrf_pr)[1:2], nrow(analog.indices)),
# 填上合適的 dimnames(尚無實際作用)
dimnames = list(
hiram_wrf_lon
%>% sprintf("%1.2f", .
), hiram_wrf_lat
%>% sprintf("%1.2f", .
), 1:nrow(analog.indices)
)
)
dim(pr.new) #[1] 41 77 10227
# analog.indices 逐列處理(1:10227)
# 每一圈會為 pr.new 填上一層資料,共 10227 層
for (i in 1:nrow(analog.indices)) {
pr.new[, , i] <-
hiram_wrf_pr[, , analog.indices$i1[i]] * analog.weights$w1[i] +
hiram_wrf_pr[, , analog.indices$i2[i]] * analog.weights$w2[i]
}
# 檢查 pr.new[1,1,11]
analog.indices[11,]
# day i1 i2
# 1: 10 11 11
analog.weights[11,]
# day w1 w2
# 1: 11 0.2276517 0.762284
print(hiram_wrf_pr[1, 1, 10] * 0.2276517 + hiram_wrf_pr[1, 1, 11] * 0.762284) # 0.007988894
print(pr.new[1, 1, 11]) # 0.007988894
IyDlkITovLjlhaXmqpTmoYjkuYPmjqHnlKjljp/nmbzllY/ogIXkuIrlgrPkuYsgY3N2IOWSjCBuYyDmqpQKCmxpYnJhcnkobWFncml0dHIpCmxpYnJhcnkoZGF0YS50YWJsZSkKbGlicmFyeShuY2RmNCkKCiMg5ZCE56iu6K6A6LOH5paZCmFuYWxvZy5pbmRpY2VzIDwtCiAgZnJlYWQoIkhJUkFNX1dSRl9hbmFsb2cuaW5kaWNlcygxOTc5LTIwMDUpLmNzdiIsCiAgICAgICAgY29sLm5hbWVzID0gYygiZGF5IiwgImkxIiwgImkyIikpCmFuYWxvZy53ZWlnaHRzIDwtCiAgZnJlYWQoIkhJUkFNX1dSRl93ZWlnaHRzKDE5NzktMjAwNSkuY3N2IiwKICAgICAgICBjb2wubmFtZXMgPSBjKCJkYXkiLCAidzEiLCAidzIiKSkKSElSQU1fV1JGX2RhdGEgPC0gbmNfb3BlbigiMTk3OTAxLTIwMDUxMl9wcl9heGlzX3RpbWVfZG9tYWluLm5jIikKaGlyYW1fd3JmX2xvbiA8LSBuY3Zhcl9nZXQoSElSQU1fV1JGX2RhdGEsICJsb24iKQpoaXJhbV93cmZfbGF0IDwtIG5jdmFyX2dldChISVJBTV9XUkZfZGF0YSwgImxhdCIpCmhpcmFtX3dyZl90aW1lIDwtIG5jdmFyX2dldChISVJBTV9XUkZfZGF0YSwgInRpbWUiKQpoaXJhbV93cmZfcHIgPC0gbmN2YXJfZ2V0KEhJUkFNX1dSRl9kYXRhLCAicHIiKQoKIyDlibXmlrDnmoTkuInntq0gYXJyYXkKcHIubmV3IDwtCiAgYXJyYXkoCiAgICBOQV9yZWFsXywKICAgIGRpbSA9IGMoZGltKGhpcmFtX3dyZl9wcilbMToyXSwgbnJvdyhhbmFsb2cuaW5kaWNlcykpLAogICAgIyDloavkuIrlkIjpgannmoQgZGltbmFtZXPvvIjlsJrnhKHlr6bpmpvkvZznlKjvvIkKICAgIGRpbW5hbWVzID0gbGlzdCgKICAgICAgaGlyYW1fd3JmX2xvbiAlPiUgc3ByaW50ZigiJTEuMmYiLCAuKSwKICAgICAgaGlyYW1fd3JmX2xhdCAlPiUgc3ByaW50ZigiJTEuMmYiLCAuKSwKICAgICAgMTpucm93KGFuYWxvZy5pbmRpY2VzKQogICAgKQogICkKZGltKHByLm5ldykgI1sxXSAgICA0MSAgICA3NyAxMDIyNwoKIyBhbmFsb2cuaW5kaWNlcyDpgJDliJfomZXnkIbvvIgxOjEwMjI377yJCiMg5q+P5LiA5ZyI5pyD54K6IHByLm5ldyDloavkuIrkuIDlsaTos4fmlpnvvIzlhbEgMTAyMjcg5bGkCmZvciAoaSBpbiAxOm5yb3coYW5hbG9nLmluZGljZXMpKSB7CiAgcHIubmV3WywgLCBpXSA8LQogICAgaGlyYW1fd3JmX3ByWywgLCBhbmFsb2cuaW5kaWNlcyRpMVtpXV0gKiBhbmFsb2cud2VpZ2h0cyR3MVtpXSArCiAgICBoaXJhbV93cmZfcHJbLCAsIGFuYWxvZy5pbmRpY2VzJGkyW2ldXSAqIGFuYWxvZy53ZWlnaHRzJHcyW2ldCn0KCiMg5qqi5p+lIHByLm5ld1sxLDEsMTFdCmFuYWxvZy5pbmRpY2VzWzExLF0KIyAgICBkYXkgaTEgaTIKIyAxOiAgMTAgMTEgMTEKYW5hbG9nLndlaWdodHNbMTEsXQojICAgIGRheSAgICAgICAgdzEgICAgICAgdzIKIyAxOiAgMTEgMC4yMjc2NTE3IDAuNzYyMjg0CnByaW50KGhpcmFtX3dyZl9wclsxLCAxLCAxMF0gKiAwLjIyNzY1MTcgKyBoaXJhbV93cmZfcHJbMSwgMSwgMTFdICogMC43NjIyODQpICMgMC4wMDc5ODg4OTQKcHJpbnQocHIubmV3WzEsIDEsIDExXSkgIyAwLjAwNzk4ODg5NAo=