Разбить вектор символов на отдельные символы?(противоположно вставке или stringr::str_c)

StackOverflow https://stackoverflow.com//questions/23028885

Вопрос

Невероятно простой вопрос в 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) для того же результата.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top