R_Language 板


LINE

(同是apply家族愛好者先shout out一下XD) 以前看過版主C大跟其他前輩版友的討論,結論是 apply 效率並沒有比較好 (印象中好像背後都還是用for迴圈?!) 不過我覺得向量化(vectorized)是R語言裡面很重要的一個特性 也是functional programming跟其他程式語言不一樣的地方 我自己也喜歡做for轉apply的練習 === 分隔線 === 以下的寫法只是隨便寫的(甚至可以說骨子裡還是for的邏輯...) 請其他版友分享更好的寫法!! 1. cross validation: 1.a 還是用到folds sapply(1:5,function(i){ testIndexes <- which(folds==i,arr.ind=T) # 做你想做的事情 # ex: 找測試集的最大值跟訓練集的最小值 max_intest <- max(dataset[testIndexes,]) min_intrain <- min(dataset[-testIndexes,]) #回傳結果 c(max_intest,min_intrain) }) 其實這個跟for的寫法根本換湯不換藥XD 1.b 使用split (不要用cut跟folds) 原po原本的方法是先用sample()抽樣打亂原始data的順序後再用cut()指定組別 提供sapply + split的做法: sapply(split(dataset,1:5),function(x){ test <- x # test dataset train <- dataset[-as.numeric(row.names(x)),] # train dataset # 做你想做的 c(max(test),max(train)) }) 這個做法直接把dataset分成5份然後將該dataframe傳進sapply裡 不過須注意這作法取樣的順序跟cut不一樣 cut是111..222...333...444..555(各20次) split是12345...12345...12345...(共20次) 不過因為一開始已經用sample打亂過順序了,所以個人覺得後面cut或split應該沒差 (有錯請指正>"<) 2. 偷偷問的小問題 x <- c(2:3) y <- c(4:8) sapply(x,function(i){ i*y }) 其實我後來很常用 sapply(x,function(){ .... }) 這樣的形式寫,因為可以省略掉for裡面預先指定次數(i)的模式,寫起來也更有彈性 不過要注意function()裡面不要太多變數,不然效率應該會很差 (但是如何要評估效率我就不會惹...XD) 許願: 希望可以釣到版上其他大大 ex: celestialgod, andrew43 兩個偶像 >///< ※ 引述《empireisme (empireisme)》之銘言: : 如題 : 最近想手刻實踐 cross validtion的算法 : 上網查了一下別人的範例code : 如下 : x <- runif(100)*10 #Random values between 0 and 10 : y <- x+rnorm(100)*.1 #y~x+error : dataset <- data.frame(x,y) #Create data frame : dataset<- dataset[sample(nrow(dataset)),] : dataset : #here is the trick : folds <- cut(seq(1,nrow(dataset)),breaks=5,labels=FALSE) : folds : sample(nrow(dataset)) : for(i in 1:5){ : #Segement your data by fold using the which() function : #這裡就是我想問的 : testIndexes <- which(folds==i,arr.ind=TRUE) : #這裡就是我想問的 : testData <- dataset[testIndexes, ] : trainData <- dataset[-testIndexes, ] : #Use the test and train data partitions however you desire... : #必須要在這個步驟去套入model 然後計算MSE : } : 他在切traing 和Testing時 使用了 fold的技巧 : 但是這整段有沒有可能 不使用for 迴圈 而改用apply家族去實現 : 因為真的太喜歡使用apply的簡潔了 : 還希望版友回答 : 偷偷問另外一個問題 : 我有一個function s 去計算 x*y : s<- function(x,y){ x*y } : s( c(2,3) , c(4,5) ) : 這裡我會得到 8 15 : 但其實我想得到的是所有的可能性 : 8,10,12,15 : 請問我要如何在保有 input是 c(2,3) , c(4,5) 下 得到我要的結果呢 : 更甚至在 s ( c(2,3),c(4,5,6,7,8) ) 狀況下也可以得到遍歷的結果 --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.224.210.149 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/R_Language/M.1585093941.A.3E6.html
1F:→ locka: 之前的討論可以參考這篇 #1ScvIY4l 03/25 08:07
2F:→ andrew43: 用apply系列在分支後的運算若有例外發生比for會小麻煩 03/25 10:23
3F:→ andrew43: 一點,也比使用for難抓蟲。之前做10-fold CV的小經驗。 03/25 10:25
4F:→ obarisk: 可以看一下 purrr ,有例外處理的方法。不過,沒有很推 03/25 11:31
5F:→ empireisme: 太神拉 03/25 13:25
6F:推 VIATOR: 謝謝分享,不過這個情況實在看不出來apply有比loop好 @@ 03/26 08:53
7F:推 VIATOR: apply的優點在於比較簡潔,但CV用apply根本沒比較簡潔 03/26 08:57
8F:→ locka: 從來沒有人說apply比較好啊XD 而且也要端看好的定義是什麼 03/26 09:38
9F:→ locka: ,例如說第一種方法其實跟loop一樣,而第二種方法不需要預 03/26 09:38
10F:→ locka: 先設定loop幾次,我覺得這點就很有用啦~不過我同意CV用appl 03/26 09:38
11F:→ locka: y寫沒有比較簡潔,挑習慣用的就好~ 03/26 09:38
12F:推 VIATOR: 我只是在討論,如果有冒犯到請多多包涵 03/26 13:36
13F:→ locka: V大客氣了~沒事沒事!請多討論XD 03/26 13:41







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

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

TOP