【问题标题】:Comparing coordinates between two matrices in r and outputting ones which are the same比较r中两个矩阵之间的坐标并输出相同的坐标
【发布时间】:2014-10-20 18:17:42
【问题描述】:

我有 2 个数据框,每个数据框由坐标行组成,即 x,y,z

这些数据帧的长度不同

我希望能够使用一个数据框作为参考,并在另一个数据框中搜索与 所有 3 个位置匹配的任何坐标

然后我希望将这些坐标写入另一个数据框

即 数据框一:

[1,]  1  2  3
[2,]  2  3  3
[3,]  1  2  4
[4,]  4  2  5

数据框二:

[1,]  3  2  3
[2,]  1  1  2  
[3,]  2  3  3
[4,]  1  2  3

我希望这个返回

[1,]  2  3  3
[2,]  1  2  3

匹配的

即我希望它不仅检查相同数量的行,而且检查数据框中的所有行。

【问题讨论】:

    标签: r matrix compare comparison


    【解决方案1】:

    你可以从dplyr使用intersect

    library(dplyr)
    intersect(as.data.frame(m1) , as.data.frame(m2))
    #   V1 V2 V3
    #1  2  3  3
    #2  1  2  3
    

    或者你可以使用

    mNew <- rbind(m1,m2)
    mNew[duplicated(mNew),]
    #      [,1] [,2] [,3]
    #[1,]    2    3    3
    #[2,]    1    2    3
    

    数据

     m1 <- matrix(c(1,2,1,4, 2,3,2,4, 3,3,4,5), ncol=3)
     m2 <- matrix(c(3,1,2,1,2,1,3,2,3,2,3,3), ncol=3)
    

    【讨论】:

    • 返回:'0 列 0 行的数据框' 但是我知道至少有 3 行重叠??
    • @T_stats_3 我没有在创建的数据集上得到它。你试过第二种方法吗?我正在使用 R 3.1.1。
    • 这是一个不同的、更大的数据集,这只是一个虚构的例子?第二种方法好像解决了我的问题,谢谢!
    • @T_stats_3 看起来我调用了dplyr intersect 而不是base R intersect ,这会有所不同。我能够用base R intersect 复制dataframe with 0 columns and 0 rows
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-19
    • 2013-06-20
    • 2018-05-18
    • 1970-01-01
    • 1970-01-01
    • 2016-03-27
    • 1970-01-01
    相关资源
    最近更新 更多