Einen Zeichenvektor in einzelne Zeichen aufteilen?(Gegenteil von paste oder stringr::str_c)
-
21-12-2019 - |
Frage
Eine unglaublich einfache Frage in R, deren Lösung jedoch nicht klar ist.
So zerlegen Sie einen Zeichenvektor in seine einzelnen Zeichen, d. h.das Gegenteil von paste(..., sep='')
oder stringr::str_c()
?
Alles, was weniger klobig ist:
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"
Kann man es auch anders machen, z.B.mit strsplit()
, stringr::*
oder irgendetwas anderes?
Lösung
Ja, strsplit
werde es tun. strsplit
gibt eine Liste zurück, die Sie entweder verwenden können unlist
um die Zeichenfolge in einen einzelnen Zeichenvektor umzuwandeln, oder verwenden Sie den Listenindex [[1]]
um auf das erste Element zuzugreifen.
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"
ODER (wobei darauf hingewiesen wird, dass es eigentlich nicht notwendig ist, das zu benennen split
Streit)
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"
Sie können auch aufteilen NULL
oder character(0)
für das gleiche Ergebnis.