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?Jemand hat schon einmal eine ähnliche Lösung wie ich verwendet, aber ich finde es einfacher, wie folgt zu denken:
> text<-"some text in a string" # we want to have only the last word "string" with 6 letter
> n<-5 #as the last character will be counted with nchar(), here we discount 1
> substr(x=text,start=nchar(text)-n,stop=nchar(text))
Dadurch werden die letzten Zeichen wie gewünscht angezeigt.
Wenn Sie von Microsoft Excel oder Google Sheets kommen, kennen Sie Funktionen wie LEFT()
, RIGHT()
et MID()
. Ich habe ein Paket erstellt, das als forstringr und seine Entwicklungsversion befindet sich derzeit auf Github .
if(!require("devtools")){
install.packages("devtools")
}
devtools::install_github("gbganalyst/forstringr")
library(forstringr)
-
die
str_left()
: Zählt von links und extrahiert dann n Zeichen -
die
str_right()
- Diese zählt von rechts und extrahiert dann n Zeichen -
die
str_mid()
- Dieser Ausschnitt zeigt Zeichen aus der Mitte
Beispiele:
x <- "some text in a string"
str_left(x, 4)
[1] "some"
str_right(x, 6)
[1] "string"
str_mid(x, 6, 4)
[1] "text"
Eine kleine Änderung der Lösung von @Andrie ergibt auch die Ergänzung:
substrR <- function(x, n) {
if(n > 0) substr(x, (nchar(x)-n+1), nchar(x)) else substr(x, 1, (nchar(x)+n))
}
x <- "moSvmC20F.5.rda"
substrR(x,-4)
[1] "moSvmC20F.5"
Das war es, wonach ich gesucht habe. Und es lädt auf die linke Seite ein:
substrL <- function(x, n){
if(n > 0) substr(x, 1, n) else substr(x, -n+1, nchar(x))
}
substrL(substrR(x,-4),-2)
[1] "SvmC20F.5"
- See previous answers
- Weitere Antworten anzeigen