2016-10-06 9 views
1

ich einen Vektor mit mehreren Elementen als Zeichenketten haben geteilt durch /:Substring Zeichenfolge basierend auf einem bestimmten Zeichen in Zeichenfolge

aa <- c("Session/1/Focal_011/Dave_1", "Session/2/Focal_223/Dave_2", 
     "Session/3/Focal_23/Quentin_3", "Session/4/Focal_4/Gerald_4", 
     "Session/5/Focal_521/Pedro_5") 

Alles, was ich von jedem Element halten wollen, ist Name_n wo n = element number.

Kann ich substrje nach / Zeichen in der Zeichenfolge

substr(aa, 21, nchar(aa)) Verwendung von I

[1] "Dave_1" "Dave_2" "uentin_3" "rald_4" "Pedro_5" 

bekommen Dies liegt daran, dass die Zeichenketten unterschiedlicher length sind.

Wie kann ich es standardisieren, also halte ich nur von der letzten /?

Verwenden regex? Wenn das so ist, wie?

+2

auch 'Basisnamen (aa)' – Cath

+1

Ich bin nicht einverstanden, dass es eine doppelte Frage ist. Ich sehe nicht, wie ich meine Frage mit den Antworten auf das beantworten kann, was Sie für das Original halten. Aber das kann wegen meiner n00bness sein – Bonono

+1

Ersetzen Sie das Leerzeichen durch "/", das ist Ihr Trennzeichen für "Wörter". Es ist tatsächlich, was jilbers Antwort tut, außer dass es das vierte Wort anstelle des letzten ("tail (.., 1)") braucht. – Cath

Antwort

1

Verwenden

> aa <- c("Session/1/Focal_011/Dave_1", "Session/2/Focal_223/Dave_2", "Session/3/Focal_23/Quentin_3", "Session/4/Focal_4/Gerald_4", "Session/5/Focal_521/Pedro_5") 
> sub("^.*/(.*)$", "\\1", aa) 
[1] "Dave_1" "Dave_2" "Quentin_3" "Gerald_4" "Pedro_5" 

die online demo See.

Die ^.*/(.*)$ wird bis zum letzten / und dem Schrägstrich, keine 0+ Zeichen übereinstimmen und dann 1 den Rest in Gruppe wird erfassen, die mit dem \1 Rückreferenzierung im Ersetzungsmuster wiederhergestellt.

+1

Das ist was ich wollte! Danke, Wiktor! – Bonono

1

Hier ist eine andere Alternative mit strsplit

> sapply(strsplit(aa, "/"), "[", 4) 
[1] "Dave_1" "Dave_2" "Quentin_3" "Gerald_4" "Pedro_5" 
+2

'tail, 1' ist viel sicherer als' [4], aber ich denke, es ist bereits in der Täuschung, die ich zur Verfügung gestellt habe – Sotos

Verwandte Themen