¿Dividir un vector de caracteres en caracteres individuales?(opuesto a pegar o stringr::str_c)
-
21-12-2019 - |
Pregunta
Una pregunta increíblemente básica en R, pero la solución no está clara.
Cómo dividir un vector de caracteres en sus caracteres individuales, es decirlo contrario a paste(..., sep='')
o stringr::str_c()
?
Algo menos complicado que esto:
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"
¿Se puede hacer de otra manera, p.e.con strsplit()
, stringr::*
¿O algo más?
Solución
Sí, strsplit
lo haré. strsplit
devuelve una lista, por lo que puedes usar unlist
para forzar la cadena a un vector de un solo carácter, o usar el índice de lista [[1]]
para acceder al primer elemento.
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"
O (observando que en realidad no es necesario nombrar el split
argumento)
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"
También puedes dividir en NULL
o character(0)
para el mismo resultado.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow