在矢量元素的所有成对比较中的R-共同元素

时间:2018-01-04 06:19:10

标签: r vector comparison pairwise

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

谢谢!

2 个答案:

答案 0 :(得分:4)

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

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

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

答案 1 :(得分:3)

我们可以使用outer通过将vector的每个元素与其他元素进行比较来创建方阵

+(outer(v1, v1, `==`))

或使用sapply

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