R并行运算

##
R的并行运算有future,future.apply,foreach,parallel等包

future的用法

https://github.com/HenrikBengtsson/future
注意future和value的用法,一个输出中间过程,一个返回最终结果。

1
2
3
4
5
6
7
8
9
> library("future")
> f <- future({
+ cat("Hello world!\n")
+ 3.14s
+ })
> v <- value(f)
Hello world!
> v
[1] 3.14

future.apply的用法

教程:https://cran.r-project.org/web/packages/future.apply/vignettes/future.apply-1-overview.html

    1. 自己的例子
      1
      2
      3
      4
      5
      library(future.apply)
      plan(multisession) ## Run in parallel on local computer
      a1 <- future_lapply(PFM_matrix_list,motif_similarity1) # PFM_matrix_list是一个matrix的list,作为输入,motif_similarity1是function,返回的结果作为list输出。
      out_list <- Filter(function(k) length(k)>0, a1) #出去空余list
      out1 <- Reduce("cbind",out_list) #将list中的dataframe进行cbind操作。
    1. 官方例子
1
2
3
4
5
6
library("future.apply")
plan(multiprocess) ## Run in parallel on local computer

library("stats")
x <- 1:10
y <- future_lapply(x, FUN = quantile, probs = 1:3/4)

parallel的用法,一直没有成果过