Diviser un vecteur de caractères en caractères individuels ?(à l'opposé de coller ou stringr::str_c)

StackOverflow https://stackoverflow.com//questions/23028885

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 ?

Était-ce utile?

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
scroll top