mvbutils-operators {mvbutils}R Documentation

Utility operators

Description

Succinct or convenience operators

Usage

a %&% b
x %**% y
a %!in% b
x %is.not.a% what
x %is.a% what
x %is.not.an% what
x %is.an% what
vector %except% condition
x %matching% patt
a %not.in% b
x %that.match% patt
a %that.are.in% b
x %without.name% what
a %in.range% b
a %such.that% b
a %SUCH.THAT% b
from %upto% to
from %downto% to
x %where% cond

Arguments

a, b, vector, condition, x, y, what, patt, from, to, cond see Arguments by function.

Value

%&% string concatenation via paste( a, b, sep="")
%**% like %*% except (i) matrices with one dimension is 1 are collapsed to vectors, (ii) vectors are transposed if necessary before multiplication, and (iii) results where one dimension is 1 are collapsed to vectors
%!in%, %not.in% logical negation of %in%
%is.a% (and %is.not.a%, %is.an%, %is.not.an%) result of inherits to test class membership
%except% vector except those elements that match something in condition
%matching%, %that.match% those elements in x which are regexp-matched with any of the patts
%that.are.in% those elements in a which are in b
%without.name% x except those elements whose names match what
%in.range% those elements of a that are >=min(b) and <=max(b)
%upto% like : except that if to<from, numeric(0) is returned (useful for coding for-loops)
%downto% converse of %upto%
%such.that%, %SUCH.THAT% subset of a for which substitute( b, list( .=a)) is TRUE %such.that% uses direct subscripting; %SUCH.THAT% is more general but slower, using a for-loop
%where% those rows of the data.frame x where cond is satisfied (see Arguments by function)

Arguments by function

%&%: a, b: character vectors to be pasted with no separator

%**%: x, y: matrices or vectors to be multiplied using %*% but with less fuss about dimensions

%!in%, %that.are.in%: a, b: vectors (character, numeric, complex, or logical).

%except%: vector, condition: character or numeric vectors

%in.range%: a, b: numeric vectors.

%is.a%, etc.: x: object whose class is to be checked

%is.a%, etc.: what: class name

%matching%, %that.match%: x: character vector

%matching%, %that.match%: patt: character vector of regexps

%such.that%, %SUCH.THAT%: a: vector

%such.that%, %SUCH.THAT%: b: expression containing a ., to subscript a with

%upto%, %downto%: from, to: numeric(1)

%where%: x: data.frame

%where%: cond: unquoted expression to be evaled in context of x, then in the calling frame of %where% (or .GlobalEnv). Should evaluate to logical (or maybe numeric or character); NA is treated as FALSE. Wrap cond in parentheses to avoid trouble with operator precedence.

%without.name%: x: object with names attribute

%without.name%: what: character vector of names to drop

Author(s)

Mark Bravington

See Also

bquote

Examples

  "a" %&% "b" # "ab"
  matrix( 1:4, 2, 2) %**% matrix( 1:2, 2, 1) # c( 7, 10); '%*%' gives matrix result
  matrix( 1:2, 2, 1) %**% matrix( 1:4, 2, 2) # c( 5, 11); '%*%' gives error
  1:2 %**% matrix( 1:4, 2, 2) # '%*%' gives matrix result
  1:5 %!in% 3:4 # c( TRUE, TRUE, FALSE, FALSE, TRUE)
  1:5 %that.are.in% 3:4 # c( 3, 4)
  trf <- try( 1+"nonsense")
  if( trf %is.not.a% "try-error") cat( "OK\n") else cat( "not OK\n")
  1:5 %except% c(2,4,6) # c(1,3,5)
  c( alpha=1, beta=2) %without.name% "alpha" # c( beta=2)
  1:5 %in.range% c( 2, 4) # c(F,T,T,T,F)
  c( "cat", "hat", "dog", "brick") %matching% c( "at", "ic") # cat hat brick
  1 %upto% 2 # 1:2
  1 %upto% 0 # numeric( 0); using %upto% rather than : in for-loops can simplify coding
  1 %downto% 0 # 1:0
  1 %downto% 2 # numeric( 0)
  ff <- function( which.row) {
    x <- data.frame( a=1:3, b=4:6)
    x %where% (a==which.row)
  }
  ff( 2) # data.frame( a=2, b=5)
  (1:5) %such.that% (.>2) # 3,4,5
  listio <- list( a=1,  b=2)
  chars <- cq( a, b)
  chars %SUCH.THAT% (listio[[.]]==2) # 'b'; %such.that% won't work because [[]] can't handle xtuples

[Package mvbutils version 2.2.0 Index]