如何通过R矩阵中的列删除重复的行

ver*_*rda 20 r matrix duplicates

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

x_1 <- x[unique(x[,1]),]
Run Code Online (Sandbox Code Playgroud)

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

x_1 <- x[-duplicated(x[,1]),]
Run Code Online (Sandbox Code Playgroud)

但尺寸不正确.

jor*_*ran 27

我认为你对于如何在R中进行子集化unique(x[,1])将在第一列中返回唯一值集合感到困惑.如果您尝试使用这些值进行子集,则 R认为您指的是矩阵的.因此,您可能会获得NAs,因为这些值指的是矩阵中不存在的行.

你的另一次尝试违反了duplicated返回布尔向量而不是索引向量的事实.因此在它前面放一个减号将它转换为0和-1的向量,R再次将其解释为试图引用行.

尝试用'!'替换' - ' 在前面duplicated,这是布尔否定运算符.像这样的东西:

m <- matrix(runif(100),10,10)
m[c(2,5,9),1] <- 1
m[!duplicated(m[,1]),]
Run Code Online (Sandbox Code Playgroud)


dar*_*zig 13

由于您需要唯一行的indeces,请duplicated按照您的尝试使用.问题是使用-而不是!,所以尝试:

x[!duplicated(x[,1]),]
Run Code Online (Sandbox Code Playgroud)