2011-04-21 81 views
3

是否有可能子集這樣的ExpressionSet:子集ESET的/分割ESET

SUB = ESET [,ESET @ phenoData @數據$ X == C(0,1)]

in X是0-9的值,我只是想要當x = 0或x = 1時的條目。

+2

如果你在控制檯中輸入該值,並且你得到了正確的結果,這是可能的。否則它不是。 – 2011-04-21 13:02:00

+2

Aargh,你爲什麼要以這種方式訪問​​ESet?使用ESet $ x。 – 2011-04-21 13:32:26

回答

3

嘗試以下操作:

SUB=ESet[, ESet$x %in% c(0,1)] 

乍一看,==%in%之間的區別似乎只是微妙。

x <- 0:9 

x[x==c(0, 1)] 
[1] 0 1 

> x[x %in% c(0, 1)] 
[1] 0 1 

%in%不會返回NA,這可能是有用的,甚至是必不可少的,這取決於你想要做什麼。在下面的例子構造,==回報NA,而%in%返回預期的結果:

x <- c(NA, 0:9) 

x[x==c(0, 1)] 
[1] NA 

x[x %in% c(0, 1)] 
[1] 0 1 

但不同的是比這深得多。從幫助文件中找到? ==很明顯,當在不相等長度的向量之間進行二進制比較時,根據需要回收較短向量的元素。

嘗試例如下列:

x <- 0:9 
x[x==c(1, 2)] 
integer(0) 

這導致空載體。如果你回收矢量c(1,2),它很快就會變得明顯,爲什麼:

x:  0 1 2 3 4 5 6 7 8 9 
c(1, 2): 1 2 1 2 1 2 1 2 1 2 
'==': F F F F F F F F F F 
+0

非常感謝「==」和「%in%」之間的區別是什麼? – Azil 2011-04-21 13:21:06

+0

@Azil:'=='比較元素,而'%in%'告訴你是否或者左邊的元素是否可以在右邊找到匹配。比較'1:2 == 4:1'和'1:2%%4:1'。有關更多解釋,請參見help(比較)和help(匹配)。 – 2011-04-21 13:34:09

+0

@阿齊爾我已經擴大了我的回答來解釋差異。 – Andrie 2011-04-21 13:34:20