2012-12-21 37 views
0

我有一個有兩列的矩陣,其中一些數字在兩列中都是相同的,但第2列也包含一些不在列1中的數字。選擇第二行矩陣中不在第一行的元素R

我想選擇列2中不在列1中的那些值,並按升序將它們插入到列1中。

作爲一個開始我想用一些矩陣運算像矩陣[矩陣[1]%在%矩陣[,在%2]

只是代替%使用的東西爲「不」。

這裏的數據文件:

https://dl.dropbox.com/u/22681355/example.csv 

example<-read.csv("example.csv") 

示例[2]含有例如一些數字[1]沒有。

我想:

  1. 搜索使用的東西相當於%不是%

繼答案下面我可以做以下這些數字:

values<-setdiff(example[,2],example[,1] 

order<-sort(values) 
+0

請提供一個可重複的例子。 –

+1

如果您提供[可重現的示例](http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)以及預期的問題,您的問題將更有可能得到解答輸出。 –

回答

2

喜歡這個?

Rgames> foo 
    [,1] [,2] [,3] [,4] [,5] 
[1,] 1 5 9 13 17 
[2,] 2 6 10 14 18 
[3,] 3 7 1 15 19 
[4,] 4 8 3 16 20 
Rgames> foo[,1]%in%foo[,3] 
[1] TRUE FALSE TRUE FALSE 
Rgames> foo[,1]*!foo[,1]%in%foo[,3] 
[1] 0 2 0 4 

我確定有一個更清潔的方法。哎呀,只是這樣做:

Rgames> setdiff(foo[,1],foo[,3]) 
[1] 2 4 
+0

對於setdiff +1。如果我們只知道OP實際上希望我們做什麼... –

+0

很棒,但是我想將這些項目插入foo [,3],以便它遵循數字順序 – user1723765

+0

@Joris Meys,爲什麼它不明確?兩列,2有一些數字,1不。找到這些數字,將它們放在第一列。 – user1723765

相關問題