Подмножество ESet / разделительный ESet - PullRequest
3 голосов
/ 21 апреля 2011

Можно ли задать поднабор ExpressionSet следующим образом:

SUB = ESet [, ESet @ phenoData @ data $ x == c (0,1)]

в X - это значения от 0 до 9, и я просто хочу записи, когда x = 0 или x = 1.

1 Ответ

3 голосов
/ 21 апреля 2011

Попробуйте следующее:

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
...