2011-07-26 89 views
18

我试图删除R中的矩阵中的一列(例如第1列)的一些重复的行。 如何从列中的一列提取唯一集矩阵? 我用x_1 <- x[unique(x[,1]),],大小是正确的,但所有的值都是NA。 等等。我试图用x_1 <- x[-duplicated(x[,1]),]来代替。但尺寸不对。如何删除矩阵中的列中的重复行R

有什么想法吗?

非常感谢你提前,

回答

23

我想你感到困惑子集在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]),] 
+0

感谢您的详细解答! – verda

+0

它为我工作! thanksss! –

13

正如你所需要的独特行的indeces,使用duplicated你尝试过。问题是使用-而不是!,所以请尝试:

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

感谢它的完美! – verda