R - 比较计算的相关性

时间:2014-10-03 12:54:52

标签: r matrix combinations vectorization

你好!

我有一张24个名字及其得分的表格。对我而言,将两个人的得分相提并论是相关的。因此,与其他所有球员相比,我需要计算每个球员的得分差异。这应该导致24x24矩阵,其中对角线两侧的分数相等

我有什么

 name1       score1
 name2       score2
 name3       score3
 .....       .....
name24      score24

我在寻找什么

                   name1             name2           name 3    ...          name 24
name1                  0     score2-score1    score3-score1    ...   score24-score1
name2      score1-score2             0        score3-score2    ...   score24-score2
name3      score1-score3     score2-score3                0    ...   score24-score3
...                  ...               ...               ...   ...              ...
name24    score1-score24    score2-score24   score3-score24    ...                0

当然,对角线上的数字的绝对值将是相等的,因此只计算得分的一半是非常好的。

问题

有没有简单的方法来进行这种操作,最好是矢量化操作,还是我必须使用for循环来构建它?

// HK

1 个答案:

答案 0 :(得分:3)

outer函数可能就是你要找的东西

score <- sample(24)
names(score) <- sprintf("Player%02i", 1:24)
outer(score, score, "-")

         Player01 Player02 Player03 Player04 Player05 Player06 Player07
Player01        0       19        4       18       10       17       21
Player02      -19        0      -15       -1       -9       -2        2
Player03       -4       15        0       14        6       13       17
Player04      -18        1      -14        0       -8       -1        3
Player05      -10        9       -6        8        0        7       11
Player06      -17        2      -13        1       -7        0        4
Player07      -21       -2      -17       -3      -11       -4        0

(只显示第一列和第一行。)