3

次のように ExpressionSet をサブセット化することは可能ですか?

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

X には 0 ~ 9 の値があり、x=0 または x=1 の場合のエントリが必要です。

4

1 に答える 1

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
于 2011-04-21T13:02:21.023 に答える