J'ai une chaîne comme ça :
years<-c("20 years old", "1 years old")
Je voudrais grep seulement le nombre numérique de ce vecteur. La sortie attendue est un vecteur :
c(20, 1)
Comment dois-je m'y prendre ?
J'ai une chaîne comme ça :
years<-c("20 years old", "1 years old")
Je voudrais grep seulement le nombre numérique de ce vecteur. La sortie attendue est un vecteur :
c(20, 1)
Comment dois-je m'y prendre ?
Et si
# pattern is by finding a set of numbers in the start and capturing them
as.numeric(gsub("([0-9]+).*$", "\\1", years))
o
# pattern is to just remove _years_old
as.numeric(gsub(" years old", "", years))
o
# split by space, get the element in first index
as.numeric(sapply(strsplit(years, " "), "[[", 1))
Je pense que la substitution est un moyen indirect d'arriver à la solution. Si vous voulez retrouver tous les chiffres, je recommande gregexpr
:
matches <- regmatches(years, gregexpr("[[:digit:]]+", years))
as.numeric(unlist(matches))
Si vous avez plusieurs correspondances dans une chaîne de caractères, elle les obtiendra toutes. Si vous n'êtes intéressé que par la première correspondance, utilisez regexpr
au lieu de gregexpr
et vous pouvez sauter l'étape unlist
.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.