[問題] R的向量運算

作者: a78998042a (Benjimine)   2016-03-21 15:50:58
[問題類型]:
程式諮詢(我想用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就可以直接做一些函數運算
#不知道大家有這方面的經驗可以分享嗎
#謝謝!

Links booklink

Contact Us: admin [ a t ] ucptt.com