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/m.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燈, 水草

請輸入看板名稱,例如:Gossiping站內搜尋

TOP