2017-06-27 67 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)