Вставьте вертикальную черту между каждым символом строки в R

Как я могу вставить вертикальную черту между каждым символом строки в R? Например, скажем, у меня есть строка «ABC123». Как я могу получить вывод «A|B|C|1|2|3»? Если бы кто-нибудь мог векторизовать эту идею для вектора строк символов, это было бы здорово.


person StatGuy45    schedule 20.07.2017    source источник


Ответы (2)


Вот вариант с использованием regex

gsub("(?<=.)(?=.)", "|", "ABC123", perl = TRUE)
#[1] "A|B|C|1|2|3"

Или с более чем одной строкой

mystrings <- c("ABC123", "PASDP")
gsub("(?<=.)(?=.)", "|", mystrings, perl = TRUE)
#[1] "A|B|C|1|2|3" "P|A|S|D|P"  
person akrun    schedule 21.07.2017
comment
Кто-нибудь рекомендует какие-либо конкретные ресурсы для манипуляций со строками в R? Я бы считал себя довольно сильным программистом на R, но я все еще борюсь с такими базовыми манипуляциями со строками. - person StatGuy45; 21.07.2017

Сначала разделить на отдельные символы, а затем свернуть

paste(unlist(strsplit("ABC123", "")), collapse = "|")
#[1] "A|B|C|1|2|3"

Для вектора строк используйте sapply для их перебора

mystrings = c("ABC123", "PASDP")
sapply(strsplit(mystrings, ""), paste, collapse = "|")
#[1] "A|B|C|1|2|3" "P|A|S|D|P"  
person d.b    schedule 20.07.2017
comment
Я придумал paste0( strsplit("ABC123", "")[[1]], collapse="|"), но это по сути то же самое. - person IRTFM; 21.07.2017