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