J'ai besoin d'extraire les 2 premiers caractères d'une chaîne pour créer plus tard une distribution de tracé bin. vecteur:
x <- c("75 to 79", "80 to 84", "85 to 89")
Je suis arrivé jusqu'ici:
substrRight <- function(x, n){
substr(x, nchar(x)-n, nchar(x))
}
invoquer la fonction
substrRight(x, 1)
Réponse
[1] "79" "84" "89"
Besoin d'imprimer les 2 derniers caractères, pas le premier.
[1] "75" "80" "85"
Vous pouvez simplement utiliser la fonction substr
directement pour prendre les deux premiers caractères de chaque chaîne:
x <- c("75 to 79", "80 to 84", "85 to 89")
substr(x, start = 1, stop = 2)
# [1] "75" "80" "85"
Vous pouvez également écrire une fonction simple pour créer une sous-chaîne "inverse", en donnant les valeurs "start" et "stop" en supposant que l'index commence à la fin de la chaîne:
revSubstr <- function(x, start, stop) {
x <- strsplit(x, "")
sapply(x,
function(x) paste(rev(rev(x)[start:stop]), collapse = ""),
USE.NAMES = FALSE)
}
revSubstr(x, start = 1, stop = 2)
# [1] "79" "84" "89"
Voici une solution stringr
:
str_extract(x, "^.{3}")
Utilisez gsub
...
x <- c("75 to 79", "80 to 84", "85 to 89")
gsub(" .*$", "", x) # Replace the rest of the string after 1st space with nothing
[1] "75" "80" "85"