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?

Foi útil?

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