A very frequent operation is to increment a single term in a
hyper2 object. If
> H <- hyper2(list("a",c("a","b"),"c",c("a","b","c")),c(1:3,-6))
> H
log( a * (a + b + c)^-6 * b^2 * c^3)
Suppose we wish to increment the power of a+b. We could do:
H[c("a","b")] <- H[c("a","b")] + 1
(see the discussion of hyper2_sum_numeric at
Ops.hyper2.Rd; also vignette zeropower). Alternatively we
could use magrittr pipes:
H[c("a","b")] %<>% add(1)
But inc and dec furnish convenient idiom to accomplish the
same thing:
H[c("a","b")] %<>% inc
Functions inc and dec default to adding or subtracting 1,
but other values can be supplied:
H[c("a","b")] %<>% inc(3)
Or even
H[c("a","b")] %<>% inc(H["a"])
The convenience function trial() takes this one step further and
increments the ‘winning team’ and decrements the bracket
containing all players. The winners are expected to be players.
> trial(c("a","b"),c("a","b","c"))
> (a + b) * (a + b + c)^-1
Using trial() in this way ensures that the powers sum to zero.
H <- trial(c("a","b"),c("a","b","c"))
H %<>% inc(trial("a",c("a","b")))
H
The inc and dec operators and the trial()
function are used in inst/kka.Rmd.