簡體   English   中英

如何在 r 中創建相似度矩陣?

[英]How do I create similarity matrices in r?

我有一個矩陣,行上是立法者,列上是問題,以及指示立法者如何對給定問題進行投票的值(0 - 缺席,1 - 支持,2 - 反對)。 我需要為每個問題創建一個相似性矩陣(如果兩位立法者都出席投票,他們是否以相同的方式投票)。 在 r 中有沒有使用嵌套 for 循環的快速方法?

這是矩陣的樣子:

    I1 I2 I3 I4
L1   1  1  1  2
L2   1  1  0  0
L3   2  2  2  2
L4   2  2  0  0

這是我想為第一個問題得到的:

   L1 L2 L3 L4
L1     1  0  0
L2  1     0  0
L3  0  0     1
L4  0  0  1

你可以試試

func <- function(a, b) {ifelse(a==b & a*b != 0, 1, 0)}

lapply(dummy, function(x) {
  res <-outer(x, x, func)
  diag(res) <- NA
  colnames(res) = rownames(res) = c("L1", "L2", "L3", "L4")
  res
  })


$I1
   L1 L2 L3 L4
L1 NA  1  0  0
L2  1 NA  0  0
L3  0  0 NA  1
L4  0  0  1 NA

$I2
   L1 L2 L3 L4
L1 NA  1  0  0
L2  1 NA  0  0
L3  0  0 NA  1
L4  0  0  1 NA

$I3
   L1 L2 L3 L4
L1 NA  0  0  0
L2  0 NA  0  0
L3  0  0 NA  0
L4  0  0  0 NA

$I4
   L1 L2 L3 L4
L1 NA  0  1  0
L2  0 NA  0  0
L3  1  0 NA  0
L4  0  0  0 NA

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM