Ich bin sehr neu in R und konnte online kein einfaches Beispiel dafür finden, wie die letzten n Zeichen aus jedem Element eines Vektors (Arrays?) Entfernt werden können.
Ich komme aus einem Java-Hintergrund. Ich möchte also jedes Element durchlaufen a$data
und die letzten 3 Zeichen aus jedem Element entfernen.
Wie würden Sie vorgehen?
-3
um-0
den gewünschten Effekt zu erhalten! Ich habe viele Daten mit Datumsangaben, wie zum Beispiel:"2014-03-27 23:00:00 GMT" "2014-03-31 00:00:00 BST"
- Ja, zwei Zeitzonen zusammen, und die as.Date-Funktion gibt unerwartete Ergebnisse zurück (Tag früher für BST-Datumsangaben). Daher wollte ich den Zeitzonenstempel entfernen tun-0
und es verschwindet, zusammen mit Stundenstrptime
).Hier ist ein Weg mit
gsub
:quelle
gsub('.{5}$', '', 'abcd')
.Obwohl dies bei der Antwort von @nfmcclure größtenteils dasselbe ist, bevorzuge ich die Verwendung
stringr
package, da es eine Reihe von Funktionen deren Namen am konsistentesten und beschreibendsten sind als die in Basis R (tatsächlich google ich immer nach "wie man die Anzahl von erhält.") Zeichen in R ", da ich mich nicht an den Namen erinnern kannnchar()
).Dadurch werden die letzten 3 Zeichen von jedem Wert bei entfernt
Species
Spalte entfernt.quelle
stringr
Paket gibt es eine noch einfachere Lösung:str_sub(iris$Species, end=-4)
Dasselbe kann mit dem stringi- Paket erreicht werden:
quelle
Ähnlich wie bei @Matthew_Plourde mit
gsub
Verwenden Sie jedoch ein Muster, das auf null Zeichen gekürzt wird, dh geben Sie "" zurück, wenn die ursprüngliche Zeichenfolge kürzer als die Anzahl der zu schneidenden Zeichen ist:
Der Unterschied besteht darin, dass der
{0,3}
Quantifizierer 0 bis 3 Übereinstimmungen angibt, während{3}
genau 3 Übereinstimmungen erforderlich sind. Andernfalls wird keine Übereinstimmung gefunden. In diesem Fall wirdgsub
die ursprüngliche, nicht geänderte Zeichenfolge zurückgegeben.NB Verwendung
{,3}
wäre gleichbedeutend mit{0,3}
, ich bevorzuge einfach die letztere Notation.Weitere Informationen zu Regex-Quantifizierern finden Sie hier: https://www.regular-expressions.info/refrepeat.html
quelle