2016-08-31 8 views
-1

Ich habe ein grundlegendes Problem in R, alles, mit dem ich arbeite, ist mir vertraut (Daten, Funktionen), aber aus irgendeinem Grund kann ich die strsplit oder die gsub Funktion nicht als funktionieren erwartet. Ich probierte auch das stringr Paket. Ich werde mich nicht darum kümmern, Code mit diesem Paket aufzusetzen, weil ich weiß, dass dieses Problem einfach ist und mit den beiden oben genannten Funktionen erledigt werden kann. Persönlich fühle ich mich wie eine Seite aufzusetzen, ist nicht einmal notwendig, aber meine Geduld ist zu diesem Zeitpunkt ziemlich dünn.strsplit verhält sich nicht wie erwartet R

Ich versuche, das "." und die Nummer gefolgt von dem '.' in einer Ensemble-Gen-ID. Einfach, ich weiß.

id <- "ENSG00000223972.5" 
gsub(".*", "", id) 
strsplit(id, ".") 

Das Sternsymbol sollte nach dem '.' und entferne es, aber ich weiß nicht genau, ob es das ist. Die strsplit sollte definitiv eine Liste von zwei Elementen ausgeben, wobei die erste alles vor dem '.' und das zweite ist die eine Ziffer nach. Alles, was es zurückgibt, ist eine Liste mit 17 "" Symbolen, für kein Leerzeichen und eins für jedes Zeichen in der Zeichenfolge. Ich denke, es ist eine offensichtliche Sache, dass ich vermisse, aber ich konnte es nicht herausfinden. Danke im Voraus.

+5

Flucht es wie '' in gsub oder verwendet fixed = TRUE. Außerdem sollten Sie beachten, dass Sie das Ergebnis des gsub nicht zugewiesen haben. – Frank

Antwort

2

die Hilfedatei lesen für ?strsplit, Sie nicht "."

id <- "ENSG00000223972.5" 
gsub("[.]", "", id) 
strsplit(id, split = "[.]") 

Ausgabe verwenden:

> gsub("[.]", "", id) 
[1] "ENSG000002239725" 
> strsplit(id, split = "[.]") 
[[1]] 
[1] "ENSG00000223972" "5" 

Hilfe: "\\"

unlist(strsplit("a.b.c", ".")) 
## [1] "" "" "" "" "" 
## Note that 'split' is a regexp! 
## If you really want to split on '.', use 
unlist(strsplit("a.b.c", "[.]")) 
## [1] "a" "b" "c" 
## or 
unlist(strsplit("a.b.c", ".", fixed = TRUE)) 
+0

Ich wusste das nicht, hätte mir die Hilfeseite näher anschauen sollen. Vielen Dank – abbas786

Verwandte Themen