R_Language 板


LINE

[问题类型]: 程式谘询(我想用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档 --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 118.160.100.204
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/R_Language/M.1557399136.A.E08.html
1F:→ andrew43: analog.indices的V1有重覆,对吗?例如V1==10 05/09 19:08
2F:→ andrew43: 另外,这用for会好写很多。晚点再看看 05/09 19:11
3F:推 andrew43: 权重表格如何和其他对应?说清楚一些 05/09 19:40
4F:→ AndrewShi: andrew大~对,但应该不多,analog.indices那个表格最 05/09 20:41
5F:→ AndrewShi: 左边那一列是原始资料的天数,右边这两列则是所有资料 05/09 20:41
6F:→ AndrewShi: 里和这天最相近的2天。 05/09 20:41
7F:→ AndrewShi: 权重的表格是和analog.indices的表格相对应,也就是两 05/09 20:49
8F:→ AndrewShi: 者的[1,V1]做相乘,两者的[1,V2]做相乘,再相加,只是 05/09 20:49
9F:→ AndrewShi: 做相乘的时候analog.indices的[1,V1]不是取那个数字, 05/09 20:49
10F:→ AndrewShi: 而是取那天的降雨资料出来和权重的[1,V1]这个值做相乘 05/09 20:49
11F:→ AndrewShi: ,[1,V2]也是一样。 05/09 20:49
12F:→ andrew43: 那麽,遇到第10天时怎麽算?能把实际数字写出来吗? 05/09 21:28
13F:→ AndrewShi: 一样呀,第10天就是拿第10天的降雨值乘上权重[10,V1](0 05/09 22:15
14F:→ AndrewShi: .764485),加上第4407天的降雨值乘上权重[10,V2](0.20 05/09 22:15
15F:→ AndrewShi: 3293)相加而得。 05/09 22:15
16F:→ andrew43: 但有2个第10天不是吗?有重覆要怎麽处理? 05/09 23:31
17F:→ AndrewShi: 那是第10天被选了2次,意思是原始资料的第10天和第11 05/10 01:20
18F:→ AndrewShi: 天很像,所以原始资料在第10天选了自己本身,在第11天 05/10 01:20
19F:→ AndrewShi: 时也选了第10天,右边这两列的数字是选出跟原本资料( 05/10 01:21
20F:→ AndrewShi: 最左列)那天最相近的2天出来,所以基本上会挑出自己 05/10 01:21
21F:→ AndrewShi: 本身(第一列和第二列数字几乎一样);然而原始资料的 05/10 01:21
22F:→ AndrewShi: 第10天(最左边的列)是没有重复的。 05/10 01:21
23F:→ andrew43: ok。那麽,雨量资料有9862天,但对应表格有10227列,而 05/10 08:38
24F:→ andrew43: 你上述对应表格的列号就是对应第几天。为什麽? 05/10 08:39
25F:→ andrew43: 例如,对应表格第10227列的作用是什麽? 05/10 08:39
26F:→ andrew43: 或是你新创出的雨量资料要有10227层? 05/10 08:40
27F:→ andrew43: 是的话,参考 https://ideone.com/2S9KgX 05/10 09:06
28F:→ AndrewShi: 表格的列号正常的话也只有9862列,後面是我新创的,忘 05/10 11:11
29F:→ AndrewShi: 记删掉,抱歉造成你理解上的误会,再次感谢andrew大,c 05/10 11:11
30F:→ AndrewShi: ode的部分我会再好好的研究。 05/10 11:11
31F:推 andrew43: 那把新array的dim改一下就可以了 05/10 11:18
32F:→ AndrewShi: 恩恩,andrew大,想再请教你如果我每天的analog.indice 05/10 13:20
33F:→ AndrewShi: s和weights都有30个的话,col.names和for回圈的部分除 05/10 13:20
34F:→ AndrewShi: 了自己补足剩下的,该怎麽修改回圈中$i1.$i2.$w1.$w2 05/10 13:20
35F:→ AndrewShi: 的部分让它自动加总30天呢?? 05/10 13:20
36F:→ andrew43: 最直接的想法是双层回圈,外面那层照旧走直的,里面那层 05/10 13:36
37F:→ andrew43: 走横的。 05/10 13:36
38F:→ andrew43: 另一种可以是把权重表格重新整理成特定顺序,再利用矩阵 05/10 13:38
39F:→ andrew43: 乘法做加权。速度应该会快很多但较不直观。 05/10 13:40
40F:→ AndrewShi: 我想到的是第一种(双层回圈),不知道改成这样对不对 05/10 15:16
41F:→ AndrewShi: ,还请andrew大指点。 05/10 15:16
42F:→ AndrewShi: https://imgur.com/ci54KFs 05/10 15:16
43F:→ andrew43: 不对喔。错在w那层没有用处,变成只是同一件事做很多次. 05/10 15:19
44F:→ andrew43: 晚点我写给你看看 05/10 15:19
45F:→ AndrewShi: 因为不知道怎麽把$i1.$i2.$w1.$w2写成回圈,所以把i1.i 05/10 15:19
46F:→ AndrewShi: 2.w1.w2全改成i和w。 05/10 15:19
47F:→ andrew43: 参考看看 https://ideone.com/nRizTB 05/10 16:19
48F:→ AndrewShi: 原来是要改成这样,非常感谢andrew大,最後有2个小问题 05/10 18:04
49F:→ AndrewShi: 想请教你,一个是.[1:9862]最前面的那个.是代表前面 05/10 18:04
50F:→ AndrewShi: 读进来的那个csv档吗?!另一个是col.names如果i有1~30 05/10 18:04
51F:→ AndrewShi: 的话是只能一个一个打(命名)吗?? 05/10 18:04
52F:→ andrew43: 1. 是 05/10 18:06
53F:→ andrew43: 2. 此例命名不必要,随便取成as.character(1:30)也行 05/10 18:08
54F:→ AndrewShi: 了解,再次感谢andrew大的解答和每次的帮助~ 05/10 23:38







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Soft_Job站内搜寻

TOP