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

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

大小正确时,所有值均为NA。所以,我尝试了
x_1 <- x[-duplicated(x[,1]),]

但是尺寸不正确。

最佳答案

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

您的另一尝试与duplicated返回 bool(boolean) vector 而不是索引 vector 的事实相抵触。因此,在其前面放置减号会将其转换为0和-1的 vector ,R再次将其解释为试图引用行。

尝试将'-'替换为'!'在boolean运算符duplicated的前面。像这样:

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

10-07 19:48
查看更多