この質問を例を挙げて説明しましょう。2つのデータフレームがあります。
df1 <- data.frame(Gene=c(1,2,3,4,5,6,7,8),
Description=c("ribonuclease HII", "Leucyl-tRNA synthetase", "Arginyl-tRNA synthetase (EC 6.1.1.19) 17855:19195", "Arginyl-tRNA synthetase (EC 6.1.1.19)", "PAS domain S-box protein", "ribonuclease HII", "Isoleucyl-tRNA synthetase", "Succinyl-CoA ligase"),
Species=c("aa", "bb","aa","cc","ee","ff","aa","dd"),
Number1= c(1,0,3,20,99,100,31,123),
Number2 =c(1000, 12636,12,455,231,454,123,1), stringsAsFactors = FALSE)
> df1
Gene Description Species Number1 Number2
1 1 ribonuclease HII aa 1 1000
2 2 Leucyl-tRNA synthetase bb 0 12636
3 3 Arginyl-tRNA synthetase (EC 6.1.1.19) 17855:19195 aa 3 12
4 4 Arginyl-tRNA synthetase (EC 6.1.1.19) cc 20 455
5 5 PAS domain S-box protein ee 99 231
6 6 ribonuclease HII ff 100 454
7 7 Isoleucyl-tRNA synthetase aa 31 123
8 8 Succinyl-CoA ligase dd 123 1
そして、興味のある遺伝子名を含むdf2:
df2 <- data.frame(Description=c("ribonuclease HII", "Leucyl-tRNA synthetase", "Arginyl-tRNA synthetase (EC 6.1.1.19)"), stringsAsFactors = FALSE)
> df2
Description
1 ribonuclease HII
2 Leucyl-tRNA synthetase
3 Arginyl-tRNA synthetase (EC 6.1.1.19)
私の質問の要約:
ここでは、df2の各行のテキストをdf1に一致させて、新しいテーブルに配置したいと思います。たとえば、この関数はdf1の「リボヌクレアーゼHII」を検索し、このテキストを含むすべての行を取得します。次に、df1などのdf2(ロイシル-tRNAシンテターゼ)の次の行をチェックします...すべての検索が終了したら、それらをまとめます。期待される出力は、次の行を含むテーブルである必要があります。
> df1
Gene Description Species Number1 Number2
1 1 ribonuclease HII aa 1 1000
2 6 ribonuclease HII ff 100 454
3 2 Leucyl-tRNA synthetase bb 0 12636
4 3 Arginyl-tRNA synthetase (EC 6.1.1.19) 17855:19195 aa 3 12
5 4 Arginyl-tRNA synthetase (EC 6.1.1.19) cc 20 455
forループでgrep関数を試してみましたが、うまくいきませんでした。ここで注意が必要な部分があります。「アルギニルtRNAシンテターゼ(EC 6.1.1.19)」を検索すると、「アルギニルtRNAシンテターゼ(EC 6.1.1.19)17855:19195」も検出されるはずです。ただし、関数が「ロイシル-tRNAシンテターゼ」を検索する場合、「ロイシル-tRNAシンテターゼ」と同じ文言を含む「イソロイシル-tRNAシンテターゼ」は使用しないでください。
前もって感謝します。タイトルや本文の編集についてのご提案もお待ちしております!
を使用grepl()
して、目的の結果を得ることができます。まず、検索パターンを作成します(これには単語の境界("\\b"
)がないため、一致するものが検索されます)。次に、を使用する以外のすべてのメタ文字をエスケープ"|"
しgsub()
、を使用grepl()
してdf1
:の行をサブセット化します。
new_pat <-paste0(df2$Description, collapse = "|")
new_pat <- gsub("([][{}().+*^$\\?])", "\\\\\\1", new_pat)
df1[grepl(new_pat, df1$Description), ]
Gene Description Species Number1 Number2
1 1 ribonuclease HII aa 1 1000
2 2 Leucyl-tRNA synthetase bb 0 12636
3 3 Arginyl-tRNA synthetase (EC 6.1.1.19) 17855:19195 aa 3 12
4 4 Arginyl-tRNA synthetase (EC 6.1.1.19) cc 20 455
6 6 ribonuclease HII ff 100 454
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加