2011-07-26 88 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