【发布时间】:2015-11-22 04:44:23
【问题描述】:
假设我们有p by n 矩阵。我想生成一个输出矩阵,w (p x p) 如w_ij 表示i_th 行数比j_th 大多少倍(显然最多可以是n)。
我的代码在这里,我正在寻找更快的方法。
p <- dim(dat)[1]
n <- dim(dat)[2]
w <- matrix(0,p,p)
for(i in 1:n){
for(j in 1:(p-1)){
for(k in (j+1):p){
if(dat[j,i] > dat[k,i]){
w[j,k] <- w[j,k]+1
}else{
w[k,j] <- w[k,j]+1
}
}
}
}
一个小例子
如果输入数据是
dat <- matrix(1:9, 3)
dat
# [,1] [,2] [,3]
#[1,] 1 4 7
#[2,] 2 5 8
#[3,] 3 6 9
预期的结果是
W <- matrix(c(0,3,3,0,0,3,0,0,0),3)
W
# [,1] [,2] [,3]
#[1,] 0 0 0
#[2,] 3 0 0
#[3,] 3 3 0
【问题讨论】:
-
我认为这可能会受益于一个小的工作示例。如果您的数据是
dat <- matrix(1:9, 3),那么预期的结果是什么?谢谢 -
W=matrix(c(0,3,3,0,0,3,0,0,0),3) 所以我们有 3 个比较时间。第2胜1次第3次,第3次第1次胜3次。