【问题标题】:How to remove duplicated rows by a column in an R matrix如何按R矩阵中的列删除重复的行
【发布时间】:2011-10-13 17:25:48
【问题描述】:

我试图在 R 矩阵中按一列(例如第一列)删除重复的行。如何从矩阵中提取一列的唯一集?我用过

x_1 <- x[unique(x[,1]),]

虽然大小正确,但所有值都是NA。所以相反,我尝试了

x_1 <- x[-duplicated(x[,1]),]

但尺寸不正确。

【问题讨论】:

    标签: r matrix duplicates


    【解决方案1】:

    我认为您对 R 中子集的工作方式感到困惑。unique(x[,1]) 将在第一列中返回一组唯一值。如果您然后尝试使用这些值 subset,R 认为您指的是矩阵的 rows。因此,您可能会得到 NA,因为这些值引用了矩阵中不存在的行。

    您的其他尝试与 duplicated 返回一个 boolean 向量而不是索引向量的事实相冲突。因此,在它前面加上一个减号会将其转换为 0 和 -1 的向量,R 再次将其解释为试图引用行。

    尝试将“-”替换为“!” duplicated前面是布尔否定运算符。像这样的:

    m <- matrix(runif(100),10,10)
    m[c(2,5,9),1] <- 1
    m[!duplicated(m[,1]),]
    

    【讨论】:

      【解决方案2】:

      由于您需要唯一行的索引,请尝试使用duplicated。问题是使用- 而不是!,所以试试:

      x[!duplicated(x[,1]),]
      

      【讨论】:

        猜你喜欢
        • 2018-03-21
        • 2017-04-13
        • 1970-01-01
        • 2011-12-26
        • 1970-01-01
        • 1970-01-01
        • 2012-05-03
        • 1970-01-01
        • 2019-12-27
        相关资源
        最近更新 更多