2016-04-14 6 views

Antwort

1

Dies wird

gsub("(.*)_.*$","\\1",v) 
# [1] "abc" "ab" 
+0

Dank mit Arbeit! Es hat perfekt funktioniert! – sonu

+1

warum nicht 'gsub ('_. *', '', V)' – rawr

+0

Ja, das ist die offensichtliche/bessere Lösung. –

0

Eine weitere Option strsplit()

sapply(strsplit(v, '_'), '[', 1) 
[1] "abc" "ab" 
+0

Das funktioniert auch super. Ich bin jedoch sehr daran interessiert, die Verwendung von '[' in diesem Code zu verstehen. Ich bin nicht in der Lage herauszufinden, was die Funktion von '[' 'in diesem Fall ist. – sonu

+0

'strsplit()' erzeugt eine Liste, überprüfe die Ausgabe von 'strsplit (v, '_')'. Wir können folglich 'sapply' verwenden, um das Ergebnis zu durchlaufen und' [1] 'auf jede Unterliste anzuwenden, die das erste Element auswählt. Es wäre das gleiche wie das Aufrufen von '[1]' auf jeder Unterliste, dh 'strsplit (v, '_') [[1]] [1]' und 'strsplit (v, '_') [[2]] [1] '. – mtoto

0
gsub('_.+$', '', v) 
# [1] "abc" "ab" "abc" 
Verwandte Themen