假设我有一个如下形式的矩阵:
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 被跳过。我想要做的是在每个残基之间建立一个“距离矩阵”。在这种情况下,我想制作一个 7x7 矩阵,其中元素 (1,3) 是这些位置之间的距离。
现在,我意识到我不需要填写下半部分,对角线以上的所有内容就足够了。我还看到了如何使用 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 语句(或更聪明的东西)来制作这个矩阵?我试过这样做,但不知何故没有成功。谢谢你的帮助!