3

私はRに不慣れで、言語を学ぼうとしています。私はBioconductorのmulttestパッケージに含まれているGolub(1999)データをいじっています。

Golubデータを例にとると、「ALL」患者(列1〜27で表されます。「AML」患者が表されます)の中から、遺伝子「CCND3 CyclinD3」(行1042にあります)の2.4を超える値を選択しようとしています。列28から38まで)。これは私がしたことです:

library(multtest); data(golub)
gol.fac <- factor(golub.cl,levels=0:1, labels= c("ALL","AML"))
x <- golub[1042, gol.fac=="ALL"] > 2.4
golub [1042, x]

私が得る結果は次のとおりです。

[1] 2.44562 2.76610 2.59385 1.12058

値「1.12058」を取得するのはなぜですか?「1.12058」は、AML患者に属する行1042の最後(列38)の式の値であることがわかりました。

誰かが私がやろうとしていることをする正しい方法を教えてもらえますか?また、なぜ私がAML患者の価値を得ているのか説明してください。

4

2 に答える 2

7

@seancarmodyはあなたに完璧な答えを与えましたが、彼が使用したパラダイムは少し読みにくいと思います(これは純粋に主観的なものです)。これが少し違う方法を示す私の試みです。

golub[1042, which(golub[1042, gol.fac == "ALL"] > 2.4)]

裏返しに読むと、次のようになります。

  • 行1042と列を選択しますgol.fac == "ALL"
  • which()2.4(一部)より大きい値の位置を見つけます
  • サブセットgolubの1042行目で、値が2.4より大きい(最も外側の[])列を取り出します。
于 2012-08-21T09:06:15.767 に答える
5

ベクトルxは一連の値にTRUEなり、値のFALSEどこgolub[1042, gol.fac=="ALL"]が2.4より大きいかを示しますが、それを使用してインデックスを作成しますx <- golub[1042, ](つまり、だけでなく両方の要素にわたって)AML

これを試して:

golub[1042, gol.fac=="ALL"][x]
于 2012-08-21T08:52:35.613 に答える