? {doubt}R Documentation

Modified question mark operator

Description

⁠?⁠ was modified to allow definition of new operators (unary, binary or n-ary). We refer to those as "dubious" operators, both as a reference to the package name and to emphasize the fact that they're not parsed as proper operators. . Standard usage as documented in ?utils::Question still works.

Usage

`?`(e1, e2)

Arguments

e1

lhs

e2

rhs

dubious operators

Every accessible function, custom defined or base/packaged, can be called as an infix operator, for example 1:5 %%intersect? 3:7 is equivalent to intersect(1:5, 3:7). In that case, ⁠%%intersect?⁠ will have the precedence of %%, which is the most intuitive, but any precedence including and below unary + can be used, for instance ⁠*intersect?⁠ will have the precedence of *.

Unary operators can be used to, for instance ~head? x is the same as head(x). This form can also be used with several arguments, but in this case we need to write ⁠~head? {x ; n)⁠ for instance, which is convenient to go to the next line without the need of a comma.

dubious pipes

We can pipe with a chosen precedence by using a dubious pipe, for instance x + y ~saveRDS? file will save x + y, not just x

We can pipe with a chosen precedence by using a dubious pipe, for instance x + y ~saveRDS? file will save x + y, not just x

dubious syntaxes

defining "?add: ({x})({y})" <- "{x} + {y}" will allow us to call ?add: (a)(b) to add a and b.

Examples

cars +head? 2
+head? cars
+head? {
  cars
  2}

[Package doubt version 0.1.0 Index]