答案是附加parent.frame()
到输出函数的环境:
f <- function (...) { args <- match.call(expand.dots = FALSE)$... last <- length(args) params <- c(args[-last], names(args)[[last]]) e <- parent.frame() function (...) eval(args[[length(args)]], envir = setNames(list(...), params), enclos = e) }
希望有人可以解释为什么这有效而不是你的.随意编辑.
答案是附加parent.frame()
到输出函数的环境:
f <- function (...) { args <- match.call(expand.dots = FALSE)$... last <- length(args) params <- c(args[-last], names(args)[[last]]) e <- parent.frame() function (...) eval(args[[length(args)]], envir = setNames(list(...), params), enclos = e) }
希望有人可以解释为什么这有效而不是你的.随意编辑.