recycle is called within a function and ensures the parameters in the
calling function are all the same length by repeating them using rep. This
function alters the environment from which it is called. It is stricter than
R recycling in that it will not repeat vectors other than length one to match
the longer ones, and it throws more informative errors.
Usage
recycle(..., .min = 1, .env = rlang::caller_env())Examples
testfn = function(a, b, c) {
n = recycle(a,b,c)
print(a)
print(b)
print(c)
print(n)
}
testfn(a=c(1,2,3), b="needs recycling", c=NULL)
#> [1] 1 2 3
#> [1] "needs recycling" "needs recycling" "needs recycling"
#> NULL
#> [1] 3
try(testfn(a=c(1,2,3), c=NULL))
#> [1] 1 2 3
#> Error in testfn(a = c(1, 2, 3), c = NULL) :
#> argument "b" is missing, with no default
testfn(a=character(), b=integer(), c=NULL)
#> character(0)
#> integer(0)
#> NULL
#> [1] 0
# inconsistent to have a zero length and a non zero length
try(testfn(a=c("a","b"), b=integer(), c=NULL))
#> Error : Parameter `b` is/are the wrong lengths. They should be length 2 (or 1)