2017-06-27 69 views
1

我有一个包含大约1000列/参数的数据集,并且希望在这些参数中的每一个之间执行回归。因此,第1列中的数据将与所有其他999个参数进行叠加以进行线性回归等。R编程 - 循环的并行处理

这种方法的非优化的版本是:

loop <- c(1:ncol(Data)) 
for (column in loop){ 

    # Fetch next data to be compared 
    nextColumn <- column + 1 

    # Fetch next column 
    while (nextColumn <= ncol(Data)){ 

     # Analysis logic 

     # Increment the counter 
     nextColumn <- nextColumn + 1 

    } 
} 

上面的代码将工作,但需要大量的时间。为了优化,我想在R中使用并行处理。在这种情况下有许多不同的包可用,例如paralleldoparallel作为explained in this question

但是,可能会有一些开销,作为一个新的R程序员,我可能不知道。我正在寻找来自R专家的建议,以更好的方式在R中编写上面的代码,以及是否有任何特定的包可用。

期待建议,谢谢。

+1

如果你是新的R,我不会试图并行代码。在apply()中调用你的回归函数。看看下面的[链接](https://stackoverflow.com/questions/20342661/apply-in-r-with-user-defined-function)。 –

+0

@JamieMac:谢谢。我很难弄清楚'apply()'将一次获取两列/参数,执行回归并移至下一个组合。目前,在分析逻辑中,我也捕获所有的'summary()'数据,所以我有一个向量不断更新,而回归循环通过不同的列/参数。仍然阅读'apply()'文件,但如果您有任何建议,请分享。 –

回答

1

使用mapply这样的:

X <- 1:(ncol(mtcars)-1)  # first through penultimate column 
Y <- 2:ncol(mtcars)   # second through last column 
mapply(function(x,y) sum(mtcars[,x],mtcars[,y]), X, Y)