R语言极其推崇向量计算,因此请尽量使用apply族函数代替for循环
一个for循环例子:
- dif <- function(x,y){
- x^y
- }
- start <- Sys.time()
- a <- c()
- for(j in 1:200){
- for(i in 1:200){
- A=dif(i,j)
- a <- c(a,A)
- }
- }
- Sys.time()-start
改为apply方式代替循环:
- start <- Sys.time()
- grid_mat=expand.grid(1:200, 1:200)
- a <- mapply(dif, grid_mat[,1], grid_mat[,2])
- Sys.time()-start
使用矩阵计算思路:
- start <- Sys.time()
- a <- outer(1:200, 1:200,dif)
- Sys.time()-start
这个例子可以直接使用向量计算:
- start <- Sys.time()
- grid_mat=expand.grid(1:200, 1:200)
- b <- grid_mat[,1]^grid_mat[,2]
- Sys.time()-start


雷达卡


京公网安备 11010802022788号







