2

これは非常に簡単な質問です。

長いデータセットがあり、特定の列の特定のエントリに基づいてサブセットを作成したいと考えています。この場合、次のように設定しています。

サンプルデータ:

> NL

SNP alleles

rs1234 A_T

rs1235 A_G

rs2343 A_T

rs2342 G_C

rs1134 C_G

rs1675 T_A

rs8543 A_T

rs2842 G_A

P <- subset(NL, alleles = "A_T", alleles = "T_A", alleles = "G_C", alleles = "C_G")

これはエラーなしで実行されますが、結果の P は決してサブセットではありません (P の末尾には元の NL と同じ数のエントリが表示されます)。

私は何を間違っていますか?

4

2 に答える 2

5

最も明白なエラーは、「==」の意味で「=」を使用していることです。しかし、コンテキストから、このデータを本当に「分割」したいと思います。

split(NL, NL$alleles)

それぞれが の値の 1 つを持つデータフレームのリストを作成しますalleles

しかし、パターン マッチングを使用したい場合もあります。

NL[ grepl("C_G|G_C|A_T|T_A", NL$alleles), ]
     SNP alleles
1 rs1234     A_T
3 rs2343     A_T
4 rs2342     G_C
5 rs1134     C_G
6 rs1675     T_A
7 rs8543     A_T

そして、私があなたのコメントの例だと思うもので説明します:

P <- read.table(text="V1 V2 V3 V4 V5 V6 alleles
 15116 25 rsX 0 123412 G A G_A 
15117 25 rsX1 0 23432 A C A_C 
15118 25 rsX2 0 234324 A G A_G 
15119 25 rsX3 0 3423 A G A_G 
15120 25 rsX4 0 2343223 C A C_A 
15121 25 rsX5 0 23523423 A G A_G", header=TRUE)

 P[ grepl("G_A", NL$alleles), ]

#       V1       V2 V3        V4 V5 V6 alleles
# 15116 25 rs306910  0 154613671  G  A     G_A

サブセット バージョン:

 subset(P, alleles %in% c("G_A", "A_G") )

      V1   V2 V3       V4 V5 V6 alleles
15116 25  rsX  0   123412  G  A     G_A
15118 25 rsX2  0   234324  A  G     A_G
15119 25 rsX3  0     3423  A  G     A_G
15121 25 rsX5  0 23523423  A  G     A_G
于 2012-02-21T20:56:28.357 に答える
0

=引数の受け渡しまたは割り当てに使用されます。必要なのは、何かが正しいかどうかをテストすることです。を使用します==。また、複数の基準に合格しており、どのように組み合わせるかを指定していません。これらの条件のいずれかが真(すべてではない)であるサブセットが必要であると確信していますが、Rはそうではありません。この場合、次の%in%演算子を使用できます。

P <- subset(NL, alleles %in% c("A_T", "T_A", "C_G"))

また、いくつかの条件を与えようとしているsubsetが、それらを組み合わせる方法を教えていないことに注意してください。いずれかの条件が真である行が必要であることがわかりますが、OR演算子を使用してRに指示する必要があります|

P <- subset(NL, alleles == "A_T" | alleles == "T_A" | alleles == "C_G")

上記の%in%演算子は、これの省略形のようなものです。

于 2012-02-21T20:58:09.337 に答える