R 从父环境调用缺少的参数
在没有提供参数的情况下,我找不到一种聪明的方法从父环境中恢复丢失的参数(或重新构建它) 如果使用R 从父环境调用缺少的参数,r,R,在没有提供参数的情况下,我找不到一种聪明的方法从父环境中恢复丢失的参数(或重新构建它) 如果使用缺失 fooBar <- function(x,y){ if(missing(y)) { y = get0("y", inherits = TRUE) x + y } else { x + y } } y <- 1 fooBar(x = 2) fooBar我找到了这个解决方案,但我对此感到不安 fooBar <- function(x,y=NUL
缺失
fooBar <- function(x,y){
if(missing(y)) {
y = get0("y", inherits = TRUE)
x + y
} else {
x + y
}
}
y <- 1
fooBar(x = 2)
fooBar我找到了这个解决方案,但我对此感到不安
fooBar <- function(x,y=NULL){
if(is.null(y)) {
rm(y) # otherwise, get0 recovers NULL :S
y = get0("y", inherits = TRUE)
x + y
} else {
x + y
}
}
y <- 1
fooBar(x = 2)
fooBar也许是这个
fooBar <- function(x,y){
if(missing(y)) y <- eval.parent(quote(y))
x + y
}
y <- 1
fooBar(x = 2)
# [1] 3
fooBar为什么令人不安?R默认情况下会遍历父环境进行搜索,因此您可以将此函数简化为fooBar