[英]Pairwise comparison table from a list R
如果我们想要一个对称矩阵 output,我们可以使用outer
,并as.dist
将结果呈现为下三角。
out <- outer(x, x, FUN = Vectorize(function(u, v) length(intersect(u, v))))
as.dist(out)
#> A B C
#> B 151
#> C 128 228
#> D 133 187 150
或者如果它只是没有镜像重复的成对比较
out <- combn(x, 2, FUN = function(x) length(intersect(x[[1]], x[[2]])))
names(out) <- combn(names(x), 2, FUN = paste, collapse = "_")
stack(out)[2:1]
ind values
1 A_B 151
2 A_C 128
3 A_D 133
4 B_C 228
5 B_D 187
6 C_D 150
这是另一个基本 R 选项
> crossprod(table(stack(x)))
ind
ind A B C D
A 300 151 128 133
B 151 525 228 187
C 128 228 440 150
D 133 187 150 350
或者
> as.dist(crossprod(table(stack(x))))
A B C
B 151
C 128 228
D 133 187 150
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.