Domanda

Una domanda incredibilmente di base in r e tuttavia la soluzione non è chiara.

Come dividere un vettore di carattere nei suoi singoli caratteri, cioè l'opposto del paste(..., sep='') o stringr::str_c()?

Qualcosa di meno goffo di questo:

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"
.

può essere fatto altrimenti, ad es.con strsplit(), stringr::* o qualsiasi altra cosa?

È stato utile?

Soluzione

Sì, strsplit lo farà.strsplit restituisce un elenco, in modo da poter utilizzare unlist per costringere la stringa a un singolo carattere vettoriale o utilizzare l'indice elenco [[1]] per accedere al primo 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 (notando che non è effettivamente necessario nominare l'argomento split)

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"
.

È possibile suddiviso anche su NULL o character(0) per lo stesso risultato.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top