Разбить вектор символов на отдельные символы?(противоположно вставке или stringr::str_c)
-
21-12-2019 - |
Вопрос
Невероятно простой вопрос в R, но решение не ясно.
Как разбить вектор символов на отдельные символы, т.е.противоположно paste(..., sep='')
или stringr::str_c()
?
Что-нибудь менее неуклюжее, чем это:
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"
Можно ли сделать иначе, например.с strsplit()
, stringr::*
или что-нибудь еще?
Решение
Да, strsplit
сделаю это. strsplit
возвращает список, поэтому вы можете использовать unlist
чтобы привести строку к одному вектору символов или использовать индекс списка [[1]]
для доступа к первому элементу.
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"
ИЛИ (отмечая, что на самом деле нет необходимости называть 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"
Вы также можете разделить на NULL
или character(0)
для того же результата.
Не связан с StackOverflow