ESet /划分ESet的子集

时间:2011-04-21 12:56:28

标签: r statistics expression bioconductor

是否可以像这样对ExpressionSet进行子集化:

  

SUB = ESET [,ESET @ phenoData @数据$ X == C(0,1)]

X中的

是0-9的值,我只想要x = 0或x = 1时的条目。

1 个答案:

答案 0 :(得分: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