Набор полезных инфиксных операторов в R
Пакет infix состоит из коллекции полезных операторов, которые можно разделить на 4 категории:
● Пайп операторы из пакета magrittr, о них я подробно рассказывал тут;
● Оператор обработки ошибок;
● Логические операторы функций;
● Общие операторы.
Операторы обработки ошибок
Для обработки ошибок infix предоставляет вам функцию tryExcept() и оператор %except% . Функция tryExcept() имеет 3 аргумента:
● expr - выражение, которое будет оцениваться
● except - выражение, которое будет выполняться, если expr завершился ошибкой
● error - функция обработчика ошибки, возникшей во время оценки expr.
Примеры:
tryExcept({
foo <- "foo"
stop()
}, except = {
foo <- "foo bar"
})
print(foo) # "foo bar"
С помощью оператора тоже самое можно прописать вот так:
stop()
} %except% {
foo <- "foo bar"
}
print(foo) # "foo bar"
Логические операторы функций
Данный блок состоит из 3 операторов:
f1 %&% f2 - логическое и
f1 %|% f2 - логическое или
f1 %xor% f2 - исключающее или
Пример:
is.null.na <- is.null %|% is.na
all(is.null.na(NA), is.null.na(NULL)) # вернёт TRUE
Общие операторы
В этот блок входят 4 оператора:
● %+% - оператор конкатенации строк
● %//% - создаёт строку пути к файлу
● %!in% - логическое не в списке, инвертированный оператор %in%
● %||% - оценивает выражение, и пропускает NULL, аналог функции dplyr::coalesce()
Примеры:
# paste0 (%+%)
"01" %+% "jan" %+% "1970" # вернёт "01jan1970"
# file.path (%//%)
"home" %//% "dir" # вернёт "home/dir"
# nomatch (%!in%)
4 %!in% 1:3 # вернёт TRUE
# nil (%||%)
1 %||% 2 # вернёт 1
NULL %||% 2 # вернёт 2
#заметки_по_R