我想將兩個循環轉換爲一個應用函數,其中一個用於循環,希望這會加快我的計算速度。我知道使用apply並不能保證更快的計算,但我想試試看(也適合學習經驗來熟悉apply)R:嘗試使用apply來轉換for循環
我想要做的是;
計算兩個矩陣的每一行的皮爾森相關係數,也得到p值。
矩陣雙方都有約3000 X 100
現在我的代碼看起來是這樣的,它已經運行了天維...
cnt <- 1;
res_row1 <- c();
res_row2 <- c();
res_corr <- c();
res_pval <- c();
for (i in (1:dim(m1)[1])) {
for (j in (1:dim(m2)[1])) {
c <- cor.test(as.matrix(m1[i,]), as.matrix(m2[j,]));
res_row1[cnt] <- rownames(m1)[i];
# need both row names in the output files
res_row2[cnt] <- rownames(m2)[j];
res_corr[cnt] <- c$estimate;
res_pval[cnt] <- c$p.value;
# Storing the results for output
cnt<-cnt+1;
}
comp <- (i/dim(m1[1]) * 100;
cat(sprintf("Row number of file 1 = %f | %f percent complete \n", i, comp))
}
results <- cbind(res_row1, res_row2, res_corr, res_pval)
你們能幫助我嗎?
你的問題是不是(真的)'for'環vs'apply',而是你在[hell]的第二個圈子裏(http://www.burns-stat.com/pages/Tutor/R_inferno.pdf)。 – joran 2013-03-05 15:52:13
謝謝!剛剛在幾周前開始使用R。一個不錯的開眼界:) – 2013-03-05 18:51:09