Wie kann ich die letzten n Zeichen einer Zeichenkette in R ermitteln? Gibt es eine Funktion wie die von SQL RIGHT?
Antworten
Zu viele Anzeigen?Eine einfache R-Basislösung unter Verwendung der substring()
Funktion (wer wusste, dass diese Funktion überhaupt existiert?):
RIGHT = function(x,n){
substring(x,nchar(x)-n+1)
}
Dies hat den Vorteil, dass es grundsätzlich substr()
darunter, hat aber einen Standardendwert von 1.000.000.
Beispiele:
> RIGHT('Hello World!',2)
[1] "d!"
> RIGHT('Hello World!',8)
[1] "o World!"
UPDATE wie festgestellt von mdsumner ist der ursprüngliche Code bereits vektorisiert, da substr. Ich hätte vorsichtiger sein müssen.
Und wenn Sie eine vektorisierte Version wünschen (basierend auf Andrie 's Code)
substrRight <- function(x, n){
sapply(x, function(xx)
substr(xx, (nchar(xx)-n+1), nchar(xx))
)
}
> substrRight(c("12345","ABCDE"),2)
12345 ABCDE
"45" "DE"
Beachten Sie, dass ich Folgendes geändert habe (nchar(x)-n)
a (nchar(x)-n+1)
zu erhalten n
Zeichen.
Ich benutze substr
auch, aber auf eine andere Art und Weise. Ich möchte die letzten 6 Zeichen von "Gib mir dein Essen" extrahieren. Hier sind die Schritte:
(1) Aufteilung der Zeichen
splits <- strsplit("Give me your food.", split = "")
(2) Extrahieren Sie die letzten 6 Zeichen
tail(splits[[1]], n=6)
Salida:
[1] " " "f" "o" "o" "d" "."
Auf jedes der Zeichen kann zugegriffen werden durch splits[[1]][x]
, wobei x 1 bis 6 ist.