建立矩阵的向量与每个值的差异

时间:2016-10-13 09:43:11

标签: r matrix

dataset2 <- data.frame(bird=c("A","B","C","D","E","F"), rank=c(1:6))

我有这个示例数据集,现在我想构建一个6 * 6矩阵,每个鸟之间的等级差异。我怎么能这样做?

2 个答案:

答案 0 :(得分:2)

这是你想要的吗?

m <- with(dataset2, outer(rank, rank, '-'))
rownames(m) <- colnames(m) <- dataset2$bird

  # A  B  C  D  E  F
# A 0 -1 -2 -3 -4 -5
# B 1  0 -1 -2 -3 -4
# C 2  1  0 -1 -2 -3
# D 3  2  1  0 -1 -2
# E 4  3  2  1  0 -1
# F 5  4  3  2  1  0

可能之后也希望这样做:

m[upper.tri(m)] <- 0
tail(m[,-ncol(m)],-1)

获得:

#  A B C D E
#B 1 0 0 0 0
#C 2 1 0 0 0
#D 3 2 1 0 0
#E 4 3 2 1 0
#F 5 4 3 2 1

答案 1 :(得分:0)

这是距离矩阵的定义,没有?

dist(dataset2, method="maximum")
####  
 1        
 2 1      
 3 2 1    
 4 3 2 1  
 5 4 3 2 1

区别在于它只返回正距离......也许它不适合OP ..