是否可以像这样子集一个ExpressionSet:
SUB = ESet [,ESet @ phenoData @ data $ x == c(0,1)]
X中的值是0到9之间的值,而我只想要x = 0或x = 1时的条目。
最佳答案
请尝试以下操作:
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
关于r - ESet的子集/划分ESet,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5744395/