向量元素的所有成对比较的 R-Common 元素

R-Common elements on all pairwise comparisons of elements of a vector

我在 R 中有一个向量,比如 c(2, 2, 3, 2, 3, 4, 4),我想构建一个大小为 n(向量的元素数)的方阵如果向量的元素 i 与元素 j 具有相同的值,则该值为 1,否则为 0。在此示例中,矩阵的元素 [1,2] 和 [1,4] 必须为 1,因为向量的第一个、第二个和第四个元素相同。 有没有办法做到这一点 ?要构建的命令或函数?有组合的东西?我想避免像for这样的循环。

谢谢!

我们可以使用 outer 通过将 vector 的每个元素与其他元素

进行比较来创建一个方阵
+(outer(v1, v1, `==`))

或使用sapply

+(sapply(v1, `==`, v1))

我刚想到这个...这就是你想要的吗?

a <- c(2, 2, 3, 2, 3, 4, 4)
mat <- a%*%t(a)

apply(mat, 2, function(x){as.integer((x/a)==a)})