gpt4 book ai didi

R:成对比较矩阵中的所有列

转载 作者:行者123 更新时间:2023-12-04 10:04:23 24 4
gpt4 key购买 nike

我有一个 41 行 6 列的矩阵。这就是第一部分的样子。

      X13  X15  X17  X19  X21  X23 
[1,] "7" "6" "5" "8" "1" "8"
[2,] "7" "6" "5" "8" "14" "3"
[3,] "7" "6" "1" "3" "12" "3"
[4,] "7" "6" "1" "5" "6" "14"
[5,] "2" "6" "1" "5" "16" "3"
[6,] "2" "3" "5" "5" "2" "3"
[7,] "7" "5" "5" "17" "7" "3"
[8,] "7" "2" "5" "2" "2" "14"
[9,] "2" "2" "10" "10" "2" "3"
[10,] "2" "2" "10" "5" "2" "6"

我的目标是,将所有列相互比较,看看有多少数字在两列中相等。
我试着这样做:
s <- sum(matrix[,1]==matrix[,2])

但是因为我需要比较所有可能的对,所以它是无效的。把它放在一个循环中会很好,但我不知道如何。

我想以 6x6 相似矩阵的形式得到我的结果。像这样的东西:
      X13 X15 X17 X19 X21 X23
X13 0 0 3 2 2 3
X15 0 0 9 11 4 6
X17 3 9 0 5 1 3
X19 2 11 5 0 9 10
X21 2 4 1 9 0 9
X23 3 6 3 10 9 0

如您所见,当将一列与 iteslf 进行比较时,我想在矩阵中置零。

由于我是 R 初学者,所以这个任务对我来说真的很复杂。我需要将此比较用于 50 个矩阵,所以如果你能帮助我,我会很高兴。
我将不胜感激任何提示/建议。我的英语也不是很好,但我希望我能很好地解释我的问题。 :)

最佳答案

这是一个完全矢量化的解决方案,使用 expand.grid计算指数和 colSumsmatrix结束结果。

#  Some reproducible 6x6 sample data
set.seed(1)
m <- matrix( sample(10,36,repl=TRUE) , ncol = 6 )
# [,1] [,2] [,3] [,4] [,5] [,6]
#[1,] 3 10 7 4 3 5
#[2,] 4 7 4 8 4 6
#[3,] 6 7 8 10 1 5
#[4,] 10 1 5 3 4 2
#[5,] 3 3 8 7 9 9
#[6,] 9 2 10 2 4 7


# Vector source for column combinations
n <- seq_len( ncol(m) )

# Make combinations
id <- expand.grid( n , n )

# Get result
out <- matrix( colSums( m[ , id[,1] ] == m[ , id[,2] ] ) , ncol = length(n) )
diag(out) <- 0
# [,1] [,2] [,3] [,4] [,5] [,6]
#[1,] 0 1 1 0 2 0
#[2,] 1 0 0 1 0 0
#[3,] 1 0 0 0 1 0
#[4,] 0 1 0 0 0 0
#[5,] 2 0 1 0 0 1
#[6,] 0 0 0 0 1 0

关于R:成对比较矩阵中的所有列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19933788/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com