100行x2500列のテーブルの各行間のペアワイズ差の数を計算しようとしています。
私はこれを行う小さなRScriptを持っていますが、実行時間は(明らかに)非常に長いです!Cでループを書き込もうとしていますが、エラーが発生し続けます(compileCode)。
次のループをCに「変換」する方法について何か考えがありますか?
pw.dist <- function (vec1, vec2) {
return( length(which(vec1!=vec2)) )
}
N.row <- dim(table)[1]
pw.dist.table <- array( dim = c(dim(table)[1], dim(table)[1]))
for (i in 1:N.row) {
for (j in 1:N.row) {
pw.dist.table[i,j] <- pw.dist(table[i,-c(1)], table[j,-c(1)])
}
}
私は次のようなことを試みています:
sig <- signature(N.row="integer", table="integer", pw.dist.table="integer")
code <- "
for( int i = 0; i < (*N.row) - 1; i++ ) {
for( int j = i + 1; j < *N.row; j++ ) {
int pw.dist.table = table[j] - table[i];
}
}
"
f <- cfunction( sig, code, convention=".C" )
プログラミングに関しては、私は完全な初心者です。
前もって感謝します。JMFA