次の形式の行列があるとします。
Residue Can.Count SideChain XCoord YCoord ZCoord
1 MET 1 A 62.935 97.579 30.223
2 THR 2 A 63.155 95.525 27.079
3 GLU 3 A 65.289 96.895 24.308
4 TYR 4 A 64.899 96.220 20.615
8 LYS 8 A 67.593 96.715 18.023
9 LEU 9 A 65.898 97.863 14.816
10 VAL 10 A 67.664 98.557 11.533
5〜6〜7の数字はスキップされていることに注意してください。私がやりたいのは、各残基と他の残基の間に「距離行列」を作成することです。この場合、要素(1,3)がそれらの位置の間の距離である7x7行列を作成したいと思います。
今、私は下半分を埋める必要がないことに気づきました。対角線より上のすべてで十分です。また、次のように2つのforループを使用してこれを行う方法もわかります。
for(i in 1:7) {
for(j in i:7){
mymatrix[i,j] <- calcdistance(xyz1,xyz2) #I have the distance function already coded.
}
}
常にO(n ^ 2)になることはわかっていますが、Rの力を利用して、applyステートメント(またはさらに賢いもの)を使用してこの行列を作成できるかどうか疑問に思っています。私はそうしようとしましたが、どういうわけか失敗しました。ヘップありがとうございます!