Конкатенация строк в R



Давайте поговорим о конкатенации строк. Новички в R пытаются пробовать стандартную конструкцию

"a" + "b"

Но их постигает неудача — R так не работает. Оператор плюс — это арифметическая операция, её нельзя применять к строкам. В R полагается использовать функцию paste:

paste (..., sep = " ", collapse = NULL)
paste0(..., collapse = NULL)

Функция paste соединяет строки, разделяя их некоторым сепаратором sep (который по умолчанию равен пробелу), а paste0 — это её аналог с пустым оператором. Поясним примером:

paste("a", "b", "c") # "a b c"
paste0("a", "b", "c") # "abc"

Такой способ является стандартным, но многим он не по душе. Хочется иметь какой-нибудь бинарный оператор. Но ведь не обязательно это должен быть плюс (например, в PHP для конкатенации строк используется точка). Но давайте будем придерживаться R-стилистики и создадим свой оператор "%+%", который будет складывать строки. Сделать это очень просто:

"%+%" <- function(...){
  paste0(...)
}

Теперь мы можем складывать строки, используя наш новый бинарный оператор:

"a" %+% "b" %+% "c" # "abc"

Кроме того, этот оператор будет прекрасно работать и с векторами в лучших традициях R:

"a" %+% "b" %+% 1:3 # "ab1" "ab2" "ab3"

Ссылки

Поделиться:
Исходный код поста находится на GitHub:
https://github.com/AndreyAkinshin/aakinshin.net/blob/master/web/_posts/ru/2013/r-string-concatenation.md