Dividir um vetor de caracteres em caracteres individuais?(oposto de paste ou stringr::str_c)
-
21-12-2019 - |
Pergunta
Uma questão incrivelmente básica em R, mas a solução não é clara.
Como dividir um vetor de caracteres em seus caracteres individuais, ou seja,o oposto de paste(..., sep='')
ou stringr::str_c()
?
Qualquer coisa menos desajeitada que isso:
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"
Pode ser feito de outra forma, por ex.com strsplit()
, stringr::*
ou qualquer outra coisa?
Solução
Sim, strsplit
farei isso. strsplit
retorna uma lista, então você pode usar unlist
para forçar a string a um único vetor de caractere ou usar o índice de lista [[1]]
para acessar o primeiro 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"
OU (observando que não é realmente necessário nomear o 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"
Você também pode dividir NULL
ou character(0)
para o mesmo resultado.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow