Diviser un vecteur de caractères en caractères individuels ?(à l'opposé de coller ou stringr::str_c)
-
21-12-2019 - |
Question
Une question incroyablement basique en R mais la solution n'est pas claire.
Comment diviser un vecteur de caractère en ses caractères individuels, c'est-à-direl'opposé de paste(..., sep='')
ou stringr::str_c()
?
Quelque chose de moins maladroit que ça :
sapply(1:26, function(i) { substr("ABCDEFGHIJKLMNOPQRSTUVWXYZ",i,i) } )
"A" "B" "C" "D" "E" "F" "G" "H" "I" "J" "K" "L" "M" "N" "O" "P" "Q" "R" "S" "T" "U" "V" "W" "X" "Y" "Z"
Peut-on faire autrement, par ex.avec strsplit()
, stringr::*
ou autre chose ?
La solution
Oui, strsplit
le fera. strsplit
renvoie une liste, vous pouvez donc soit utiliser unlist
pour contraindre la chaîne à un seul vecteur de caractères, ou utiliser l'index de liste [[1]]
pour accéder au premier élément.
x <- paste(LETTERS, collapse = "")
unlist(strsplit(x, split = ""))
# [1] "A" "B" "C" "D" "E" "F" "G" "H" "I" "J" "K" "L" "M" "N" "O" "P" "Q" "R" "S"
#[20] "T" "U" "V" "W" "X" "Y" "Z"
OU (en notant qu'il n'est pas réellement nécessaire de nommer le split
argument)
strsplit(x, "")[[1]]
# [1] "A" "B" "C" "D" "E" "F" "G" "H" "I" "J" "K" "L" "M" "N" "O" "P" "Q" "R" "S"
#[20] "T" "U" "V" "W" "X" "Y" "Z"
Vous pouvez également diviser sur NULL
ou character(0)
pour le même résultat.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow