[英]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.