Title: | Tools for Working with ... |
---|---|
Description: | The ellipsis is a powerful tool for extending functions. Unfortunately this power comes at a cost: misspelled arguments will be silently ignored. The ellipsis package provides a collection of functions to catch problems and alert the user. |
Authors: | Hadley Wickham [aut, cre], RStudio [cph] |
Maintainer: | Hadley Wickham <[email protected]> |
License: | MIT + file LICENSE |
Version: | 0.3.2.9000 |
Built: | 2024-11-04 03:48:20 UTC |
Source: | https://github.com/r-lib/ellipsis |
Sometimes you just want to use ...
to force your users to fully name
the details arguments. This function warns if ...
is not empty.
env |
Environment in which to look for |
action |
The action to take when the dots have not been used. One of
|
f <- function(x, ..., foofy = 8) { check_dots_empty() x + foofy } try(f(1, foof = 4)) f(1, foofy = 4)
f <- function(x, ..., foofy = 8) { check_dots_empty() x + foofy } try(f(1, foof = 4)) f(1, foofy = 4)
Named arguments in ... are often a sign of misspelled argument names.
env |
Environment in which to look for |
action |
The action to take when the dots have not been used. One of
|
f <- function(..., foofy = 8) { check_dots_unnamed() c(...) } f(1, 2, 3, foofy = 4) try(f(1, 2, 3, foof = 4))
f <- function(..., foofy = 8) { check_dots_unnamed() c(...) } f(1, 2, 3, foofy = 4) try(f(1, 2, 3, foof = 4))
Automatically sets exit handler to run when function terminates, checking
that all elements of ...
have been evaluated. If you use on.exit()
elsewhere in your function, make sure to use add = TRUE
so that you
don't override the handler set up by check_dots_used()
.
env |
Environment in which to look for |
action |
The action to take when the dots have not been used. One of
|
f <- function(...) { check_dots_used() g(...) } g <- function(x, y, ...) { x + y } f(x = 1, y = 2) try(f(x = 1, y = 2, z = 3)) try(f(x = 1, y = 2, 3, 4, 5))
f <- function(...) { check_dots_used() g(...) } g <- function(x, y, ...) { x + y } f(x = 1, y = 2) try(f(x = 1, y = 2, z = 3)) try(f(x = 1, y = 2, 3, 4, 5))
safe_median()
works stats::median()
but warns if some elements of ...
are never used.
safe_median(x, ...) ## S3 method for class 'numeric' safe_median(x, ..., na.rm = TRUE)
safe_median(x, ...) ## S3 method for class 'numeric' safe_median(x, ..., na.rm = TRUE)
x |
Numeric vector |
... |
Additional arguments passed on to methods. |
na.rm |
For numeric method, should missing values be removed? |
x <- c(1:10, NA) safe_median(x, na.rm = TRUE) median(x, na.rm = TRUE) try(median(x, na.mr = TRUE)) try(safe_median(x, na.mr = TRUE)) try(median(1, 2, 3)) try(safe_median(1, 2, 3))
x <- c(1:10, NA) safe_median(x, na.rm = TRUE) median(x, na.rm = TRUE) try(median(x, na.mr = TRUE)) try(safe_median(x, na.mr = TRUE)) try(median(1, 2, 3)) try(safe_median(1, 2, 3))