R语言并行运算
在处理大数据方面,相对于Python等语言,R语言是没有优势的(当然C是最快的)。
偶然间,学到了R语言的一个知识点:并行运算。虽然平时很少用到,但还是很有必要掌握的。
install.packages("doParallel")
install.packages("foreach")
library(doParallel)
library(foreach)
myfunc<-function(x){
......
}
#函数的具体内容这里就不写了
#以上是准备工作
num_core <- detectCores() #查看有几个核
cl <- makeCluster(cl) #构建集群
registerDoParallel(cl) #让硬件准备环境,分配资源
test <- foreach(x=1:10000, .combine = "rbind") %dopar% myfunc(x)
#%dopar%是foreach包的语法格式,表示多线程运行
stopCluster(cl) #关闭集群
#"rbind"是根据自己的函数生成的数据类型,以及自己想要达到的目的
#具体用法看foreach函数用法:如下
#.combine
# function that is used to process the tasks results as they generated. This can be specified as either a function or a non-empty character string naming the function. Specifying 'c' is useful for concatenating the results into a vector, for example. The values 'cbind' and 'rbind' can combine vectors into a matrix. The values '+' and '*' can be used to process numeric data. By default, the results are returned in a list.
并行运算的速度是杠杠的。
当然,如果运算量没有那么大,不需要并行运算的话,也可以试试for、lapply、map等。以后再介绍吧。
赞 (0)