0

以下に書くコードに問題があります。入力行列(aa)の各行の距離行列を計算し、その結果をファイル名として行名を持つファイルに保存する必要があります。aaマトリックスは100x100ですが、テストマトリックスは次のようになります。

ID  A   B   C   D
AA  0.5 0.4 0.9 0.5
BB  0.2 0.1 0.8 0.96
CC  0.3 0.5 0.8 0.4
DD  0.1 0.4 0.5 0.78

実用的には、距離行列を含み、ファイル名として「AA.txt」と「BB.txt」および「CC.txt」と「DD.txt」を含む行ごとに1つのファイルを取得したいと思います。

a<- read.table ("test_matrix.txt", header = TRUE)
aa<- structure (a, class = "data.frame")
d_ply(aa, 1, function(row){
cu<- dist(as.numeric(row))
cucu<- as.matrix(cu)
write.table(cucu, quote = TRUE, file = paste(row$ID, "txt", sep = "."), sep = "\t")
}, .progress='text', .print = TRUE)

上記のコードを使用して正しいファイル名を取得しましたが、4x4マトリックスではなく5x5マトリックスを使用しているため、内容が正しくありません。誰かが問題はどれか教えてもらえますか?ヘッダーを読んで何かを推測します...ありがとう!

4

1 に答える 1

1

コードを実行すると、出力は次のようになります。

"1" "2" "3" "4" "5"
"1" 0   NA  NA  NA  NA
"2" NA  0   0.1 0.4 0
"3" NA  0.1 0   0.5 0.1
"4" NA  0.4 0.5 0   0.4
"5" NA  0   0.1 0.4 0

関数を調整して、私のアドバイスとJoranのアドバイスの両方を含めることをお勧めします。

myfun <- function(row) {
  cu<- dist(as.numeric(row[-1]))
  cucu<- as.matrix(cu)
  write.table(cucu, file=paste(row$ID, 'txt', sep='.'), sep='\t', quote=TRUE, row.names=FALSE, col.names=FALSE)
}

実行d_ply(aa, 1, myfun, .print=TRUE)すると、次のようなファイルが表示されます。

0   0.1 0.4 0
0.1 0   0.5 0.1
0.4 0.5 0   0.4
0   0.1 0.4 0
于 2013-02-01T17:40:01.007 に答える