向量元素的所有成对比较上的R-公共元素

向量元素的所有成对比较上的R-公共元素,r,vector,comparison,pairwise,R,Vector,Comparison,Pairwise,在R中有一个向量,比如c2,2,3,2,3,4,4,我想建立一个大小为n的平方矩阵,如果向量的元素I与元素j的值相同,那么向量的元素数为1,否则为0。在此示例中,矩阵的元素[1,2]和[1,4]必须具有1,因为向量的第一、第二和第四个元素相同。 有办法做到这一点吗?要构建的命令或函数?有组合的东西吗?我希望避免像for这样的循环 谢谢大家! 我们可以使用outer通过比较向量的每个元素和其他元素来创建一个方阵 +(outer(v1, v1, `==`)) 或者使用sapply 通过比较向量的每

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

谢谢大家!

我们可以使用outer通过比较向量的每个元素和其他元素来创建一个方阵

+(outer(v1, v1, `==`))
或者使用sapply

通过比较向量的每个元素和其他元素,我们可以使用outer创建一个平方矩阵

+(outer(v1, v1, `==`))
或者使用sapply


我刚想到这个。。。这是你想要的吗

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

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

我刚想到这个。。。这是你想要的吗

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

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

好啊明天会检查:-工作得很好!非常感谢。好啊明天会检查:-工作得很好!非常感谢。或mat/a==a*1@RichScriven哈哈,当然,谢谢。这让我觉得很愚蠢,但是,嘿,我在第一次喝咖啡之前就发布了这个-或mat/a==a*1@RichScriven哈哈,当然,谢谢。这让我觉得很愚蠢,但是,嘿,我在第一次喝咖啡之前就发布了这个-