【问题标题】:R-Common elements on all pairwise comparisons of elements of a vector向量元素的所有成对比较的 R-Common 元素
【发布时间】:2018-01-04 06:19:10
【问题描述】:

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

谢谢!

【问题讨论】:

    标签: r vector comparison pairwise


    【解决方案1】:

    我刚想到这……这是你想要的吗?

    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 哈哈,当然,谢谢。这让我觉得自己很愚蠢,但是,嘿,我在第一次喝咖啡之前发布了这个 ;-)
    【解决方案2】:

    我们可以使用outervector 的每个元素与其他元素进行比较来创建一个方阵

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

    或使用sapply

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

    【讨论】:

    • 好的!明天会检查它:-)
    • 完美运行!谢谢!!
    猜你喜欢
    • 2016-03-13
    • 1970-01-01
    • 1970-01-01
    • 2021-12-08
    • 2014-07-30
    • 1970-01-01
    • 2019-12-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多