Additional Operators to Help You Write Cleaner R Code

A set of additional operators and helper functions to make R code easier to read, write, and maintain. Includes string arithmetic (such as 'foo' + 'bar'), in-place reassignment operators (such as x += 1), logical operators that handle missing values, floating-point and strict ('JavaScript'-style) equality tests, 'between' operators, and 'SQL'-style pattern matching. Also provides convenience helpers for type conversion, operating-system checks, complete-cases statistics, and string manipulation, such as Oxford-comma pasting and extracting the first, last, n-th, or most common element of a vector or word in a string. The goal is to give R users, particularly those coming from other languages such as 'Python', a friendlier and more consistent syntax.


roperators

CRANversion metacrandownloads License:MIT R-CMD-check

Small, friendly operators and helpers that let your R code read the way you already think it.

Which would you rather write?

base R

roperators  ← cleaner

paste0(“Hi”, name, “, you have”, n)

f(“Hi {name}, you have {n}”)

c(1, NA, 3) == c(1, NA, 4)

c(1, NA, 3) %==% c(1, NA, 4)

isTRUE(all.equal(0.1 + 0.1 + 0.1, 0.3))

(0.1 + 0.1 + 0.1) %~=% 0.3

x[is.na(x)] <- 0

x %na<-% 0

ifelse(b == 0, NA, a / b)

a %/0% b

On the package site this is an interactive taste test — you pick the line you’d rather write, and it tells you if you’ve got good taste. →

All base R, zero dependencies — just operators and helpers that say what you mean. (Pronounced rop-er-ators, not r-operators.)

Installation

install.packages("roperators")                       # released, from CRAN
remotes::install_github("BenWiseman/roperators")      # or the dev version

Find the right tool

On the package website this is an interactive finder — search by what you’re trying to do (“join two strings”, “missing values”, “read a file”…) and jump straight to the docs. The full reference lists everything.

At a glance

You want… Reach for
String concat / subtract %+% / %-%
String repeat / count %s*% / %s/%
In-place maths %+=% %-=% %*=% %/=% %^=%
Fill NAs / regex edit in place %na<-% / %regex=% / %regex<-%
NA-aware (in)equality %==% %>=% %<=%
Floating-point equality %~=% %>~% %<~%
Strict (value + class) equality %===%
Between (excl / incl) %><% / %>=<%
Not-in / xor / all-or-nothing %ni% / %xor% / %aon%
String interpolation f()
Inline error fallback %else%
Safe divide / tolerance %/0% / %+-%
Fuzzy string match %~%

Next steps

A quick note on shared names: %+% is also ggplot2’s, and %like%-style matching is data.table’s. If you load those too, use the namespaced form (roperators::%+%) where it matters.

Reference manual

It appears you don't have a PDF plugin for this browser. You can click here to download the reference manual.

install.packages("roperators")

1.4.0 by Ben Wiseman, 5 months ago


https://benwiseman.github.io/roperators/, https://github.com/BenWiseman/roperators


Report a bug at https://github.com/BenWiseman/roperators/issues


Browse source code at https://github.com/cran/roperators


Authors: Ben Wiseman [cre, aut, ccp] , Steven Nydick [aut, ccp] (ORCID: , Jeff Jones [aut, led]


Documentation:   PDF Manual  


MIT + file LICENSE license


Imports stats, tools

Suggests magrittr, knitr, markdown, rmarkdown, prettydoc, rvest, testthat


Imported by ExcelFunctionsR, einops, sentiment.ai.


See at CRAN