[问题类型]:
程式咨询(我想用R 做某件事情,但是我不知道要怎么用R 写出来)
[软件熟悉度]:
入门(写过其他程式,只是对语法不熟悉)
[问题叙述]:
各位大大好,小弟我目前有2个矩阵(原始为list)的数值资料,其中一个为时间的
index(第几笔),另一个为各别分配的权重,我要做的事是将这2个矩阵的资讯套用在一笔
降雨资料(netcdf档)上,由下图的2个矩阵(时间index.权重)的资讯为例,也就是我要将
原始的降雨资料的第一天(笔)以第1天的降雨值(每个网格点)x0.8334249,加上第9830天的
降雨值x0.12252973来取代,以此类推。
而小弟我目前卡在不知道该怎么把矩阵对应的关系(第1天的第1个时间index乘上第一
个权重)放入循环中,下面的程式码中是以analog.indices表示时间的index,weights表
示权重,可能程式码的逻辑非常怪异,我上网查或许用apply系列的指令较适合,但我也
较少用apply系列的指令,因此较不熟悉,还烦请大大们指点和较详细的说明,也非常欢
迎引导式教学,谢谢。
2个矩阵以及降雨的资料放在此:http://0rz.tw/JI056
https://imgur.com/Q4rRKi9 (时间index)
https://imgur.com/YJFXtr5 (权重)
[程式范例]:
library(ncdf4)
library(data.table)
memory.limit(size=50000)
analog.indices <- A[[1]]
analog.indices <- matrix(unlist(analog.indices), nrow=length(analog.indices),
byrow=T)
weights <- A[[2]]
weights <- matrix(unlist(weights), nrow=length(weights), byrow=T)
HIRAM_WRF_data <- nc_open("C:\\Users\\TOM\\Desktop\\R(数据库)\\WRF(动力降尺度
资料)\\T2WHIRAM_c384_amip\\197901-200512_pr_axis_time_domain.nc")
print(HIRAM_WRF_data)
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")
pr <- array(NA,dim=c(length(hiram_wrf_lon),length(hiram_wrf_lat),2))
for(i in analog.indices[1,i]){
for(w in weights[1,w]){
if(i==w){
pr[,,1:2] <-
ncvar_get(HIRAM_WRF_data,"pr",start=c(1,1,i),count=c(41,77,1))*w
}
}
}
View(pr[,,1])
[环境叙述]:
[关键字]:
循环 ncdf档