Вот один из способов:
myfunc <- function(X, ...) {
dots <- eval(substitute(alist(...)))
for (foo in seq_along(X)) {
do.call("cat", c(dots, '\n'))
}
}
myfunc(X = 1:5, foo, 'bar')
# 1 bar
# 2 bar
# 3 bar
# 4 bar
# 5 bar
- захватить все параметры, переданные в ...
, в неоцененный список пар. Затем мы используем «do.call», чтобы ввести эти значения в вызов cat()
и оценить в локальной среде.
Это будет работать, если вам не нужно делать что-то вроде
test <- function() {
bar <- "bar"
myfunc(X = 1:5, foo, bar)
}
test()
# Error in cat(foo, bar, "\n") : object 'bar' not found