看板 R_Language 關於我們 聯絡資訊
[問題類型]: 程式諮詢(我想用R 做某件事情,但是我不知道要怎麼用R 寫出來) [軟體熟悉度]: 使用者(已經有用R 做過不少作品) [問題敘述]: 我需要將程式向量化 使用迴圈、apply系列的函數太慢了 但不用apply又做不出來 想詢問大家的經驗 [程式範例]: ###vactor的問題 #我想將一個向量分別加上一個數字 x = 1:3 y = rep(0, 3) #我想得到類似下面結果,但不用apply, 不用迴圈的做法 sapply(x, function(x) y + x, simplify = FALSE) [[1]] [1] 1 1 1 [[2]] [1] 2 2 2 [[3]] [1] 3 3 3 ###array的問題 #我想將array不同維度的物件,扣除不同數字 temp.ar = array(matrix(0, 2, 3), c(2, 3, 2)) #我想得到類似下面的結果 sapply(1:2, function(x)temp.ar[,,x] + x,simplify = FALSE) [[1]] [,1] [,2] [,3] [1,] 1 1 1 [2,] 1 1 1 [[2]] [,1] [,2] [,3] [1,] 2 2 2 [2,] 2 2 2 #另一個問題是,sapply會將物件轉成list,增加後續處理上的難度 #例如我無法直接對list取round #使用sapply的simplify又會將破壞結構,之後可能需要再重新架構 #但如果結構是array就可以直接做一些函數運算 #不知道大家有這方面的經驗可以分享嗎 #謝謝! -- -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.116.52.150 ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1458546680.A.CC4.html