[问题类型]:
程式咨询(我想用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就可以直接做一些函数运算
#不知道大家有这方面的经验可以分享吗
#谢谢!