計算が少し速くなることを期待して、2つのforループを1つのforループで1つの適用関数に変換しようとしています。applyを使用しても計算が速くなるとは限らないことは知っていますが、試してみたかったのです(applyに慣れるための学習経験もあります)
私がやろうとしているのは;
2つの行列の各行のピアソン相関係数を計算し、p値も取得します。
両方の行列の次元は約3000X100です。
現在、私のコードは次のようになっていて、何日も実行されています...
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)
助けてくれませんか?