1

私はdatこのようなデータフレームを持っています

P pedigree cas 1 M rs2745406 T 2 M rs6939431 A 3 M SNP_DPB1_33156641 G 4 M SNP_DPB1_33156664_G P 5 M SNP_DPB1_33156664_A A 6 M SNP_DPB1_33156664_T A

列がG、C、T、または A ( ) でpedigree始まり、終了するすべての行を除外したいと考えています。この場合、これは行 4、5、6 になります。SNP__[GCTA]

Rでこれを達成するにはどうすればよいですか? 私が試してみました

multisnp <- which(grepl("^SNP_*_[GCTA]$", dat$pedigree)=="TRUE")

new_dat <- dat[-multisnp,]

ベクトルmultisnpが空ですが、必要なパターンに一致するように修正する方法がわかりません。*ワイルドカードの使い方が間違っていると思います。

4

2 に答える 2

2

以下を使用できます.*?(貪欲でない方法ですべてを一致させます):

multisnp <- which(grepl("^SNP_.*?_[GCTA]$", dat$pedigree))
                              ^^^
于 2015-05-21T18:00:57.950 に答える
1

datこのようにサブセット化できます

new_dat <- dat[!grepl("^SNP_.*_[GCTA]$", dat$pedigree), ]

あなたが試したコードに関しては、ベクトルを にgrepl("^SNP_*_[GCTA]$")渡していないため、エラーなしで完了するかどうかはわかりません。詳細については、を参照してください。xgrepl?grepl

于 2015-05-21T18:01:14.420 に答える