Learn R Programming

mvbutils (version 2.5.4)

mvbutils.operators: Utility operators

Description

Succinct or convenience operators

Usage

a %&% b
x %**% y
a %!in% b
vector %except% condition
x %grepling% patt
x %is.not.a% what
x %is.a% what
x %is.not.an% what
x %is.an% what
x %matching% patt
a %not.in% b
x %perling% patt
x %that.match% patt
x %that.dont.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
x %where.warn% cond

Value

  • %&%character vector
  • %**%numeric, possibly a matrix
  • %upto%, %downto%numeric
  • %is.a% etclogical
  • All otherssame type as first argument.

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%, %that.dont.match%, %grepling%, %perling% x: character vector %matching%, %that.match%, %that.dont.match%, %grepling%, %perling% patt: character vector of regexps, with perl syntax for %perling% %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%, %where.warn% x: data.frame %where%, %where.warn% 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

See Also

bquote

Examples

Run this code
"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
c( "cat", "hat", "dog", "brick") %that.match% c( "at", "ic") # cat hat brick; synonym for '\%matching\%'
c( "cat", "hat", "dog", "brick") %that.dont.match% c( "at", "ic") # dog; like '\%except\%' but for regexps
1 %upto% 2 # 1:2
1 %upto% 0 # numeric( 0); use \%upto\% rather than : in for-loops to avoid unintended errors
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)
x <- data.frame( start=1:3, end=c( 4, 5, 0))
x %where.warn% (start < end) # gives warning about row 3
(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

Run the code above in your browser using DataLab