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?Mir ist nichts in Base R bekannt, aber es ist einfach, eine Funktion zu erstellen, die dies mit substr
y nchar
:
x <- "some text in a string"
substrRight <- function(x, n){
substr(x, nchar(x)-n+1, nchar(x))
}
substrRight(x, 6)
[1] "string"
substrRight(x, 8)
[1] "a string"
Dies ist vektorisiert, wie @mdsumner anmerkt. Bedenken Sie:
x <- c("some text in a string", "I really need to learn how to count")
substrRight(x, 6)
[1] "string" " count"
Verwenden Sie stri_sub
Funktion von stringi
Paket. Um eine Teilzeichenkette vom Ende her zu erhalten, verwenden Sie negative Zahlen. Siehe unten die Beispiele:
stri_sub("abcde",1,3)
[1] "abc"
stri_sub("abcde",1,1)
[1] "a"
stri_sub("abcde",-3,-1)
[1] "cde"
Sie können dieses Paket von Github installieren: https://github.com/Rexamine/stringi
Es ist jetzt auf CRAN verfügbar, geben Sie einfach
install.packages("stringi")
um dieses Paket zu installieren.
Eine andere, recht unkomplizierte Möglichkeit ist die Verwendung von regulären Ausdrücken und sub
:
sub('.*(?=.$)', '', string, perl=T)
Also, "alles loswerden, was von einem Zeichen gefolgt wird". Um mehr Zeichen vom Ende zu entfernen, fügen Sie so viele Punkte wie möglich in die Vorausschau-Behauptung ein:
sub('.*(?=.{2}$)', '', string, perl=T)
donde .{2}
bedeutet ..
oder "zwei beliebige Zeichen", was soviel bedeutet wie "alles loswerden, was von zwei Zeichen gefolgt wird".
sub('.*(?=.{3}$)', '', string, perl=T)
für drei Zeichen, usw. Sie können die Anzahl der zu erfassenden Zeichen mit einer Variablen festlegen, aber Sie müssen paste
den Variablenwert in die Zeichenkette des regulären Ausdrucks:
n = 3
sub(paste('.+(?=.{', n, '})', sep=''), '', string, perl=T)
- See previous answers
- Weitere Antworten anzeigen