2017-12-13 6 views
1

だから私がどのように見えるの列と呼ばれる製品が含まれているパトリックから代謝経路のDFを持って開始しますEC番号は第2の回答hereを使用しています。テキストの一部は、上記の括弧の複数のセットを持っていたので、私は今のように見えるベクトルがあります。選択したテキストで始まらない文字ベクトル内のテキストを削除する方法

[[1]] 
[1] "EC 6.1.1.14" 

[[2]] 
[1] "EC 1.1.1.202" 

[[3]] 
[1] "glycine cleavage system P2 protein" "EC 1.4.4.2"       

[[4]] 
[1] "EC 3.1.4.16" "EC 3.1.3.6" 

[[5]] 
[1] "glycogen" "EC 2.4.1.18"  

私は""内のテキストを削除するにはどうすればよいECで始まらないことを。また、2つのEC番号を持つ行は、可能であれば/で区切る必要があります。

所望の出力氏フリックの答えは1として

# [1] "EC 6.1.1.14"   "EC 1.1.1.202"   "EC 1.4.4.2"    

# [4] "EC 3.1.4.16/EC 3.1.3.6" "EC 2.4.1.18" 

私の作業例:

nan <- structure(list(Accession = structure(c(1L, 2L, 1L, 1L, 3L), .Label = c("1485.142.con.0001","1485.142.con.0002", "1485.142.con.0009"), class = "factor"),PATRIC.ID = structure(c(2L, 3L, 1L, 5L, 4L), .Label = c("fig|1485.142.peg.1066","fig|1485.142.peg.1362", "fig|1485.142.peg.2123", "fig|1485.142.peg.3103","fig|1485.142.peg.561"), class = "factor"), Product = structure(c(5L,1L, 4L, 3L, 2L), .Label = c("1,3-propanediol dehydrogenase (EC 1.1.1.202)","1,4-alpha-glucan (glycogen) branching enzyme, GH-13-type (EC 2.4.1.18)","2,3-cyclic-nucleotide 2-phosphodiesterase (EC 3.1.4.16)/3-nucleotidase (EC 3.1.3.6)","Glycine dehydrogenase [decarboxylating] (glycine cleavage system P2 protein) (EC 1.4.4.2)","Glycyl-tRNA synthetase beta chain (EC 6.1.1.14)"), class = "factor")), .Names = c("Accession","PATRIC.ID", "Product"), row.names = c(NA, 5L), class = "data.frame") 

#Extract text from parentheses and make into list 
blah <- regmatches(nan$Product,gregexpr("(?<=\\().*?(?=\\))", nan$Product, perl=TRUE)) 
+2

は、あなたが何を意味するのでしょうか?あなたもあなたの希望の出力を投稿することはできますか? – A5C1D2H2I1M1N2O1R2T1

答えて

2

あなたが自分の表現にそれを追加するだけでECの持つものを一致させたい場合は

blah <- regmatches(nan$Product,gregexpr("(?<=\\()EC.*?(?=\\))", nan$Product, perl=TRUE)) 

複数のメンバーに参加したい場合スラッシュで、「/可能であれば、分割されなければならない2つのEC番号のラインを」paste()

sapply(blah, paste0, collapse="/") 
# [1] "EC 6.1.1.14"   "EC 1.1.1.202"   "EC 1.4.4.2"    
# [4] "EC 3.1.4.16/EC 3.1.3.6" "EC 2.4.1.18" 
関連する問題