【发布时间】:2014-04-25 19:34:23
【问题描述】:
missing 为调用者未提供的参数返回TRUE,无论该参数是否具有默认值。
f <- function(a, b=2, c) {
cat(missing(a), missing(b), missing(c), fill=TRUE)
}
f(a=1)
# FALSE TRUE TRUE
我想要一个 missing 版本,它仅针对没有默认值的未提供参数返回 TRUE。我想出了一些东西,但它有点难看。
really.missing <- function(x) {
name.supplied <- as.character(substitute(x))
do.call(function(y) missing(y),
unname(mget(name.supplied, envir=parent.frame())))
}
ff <- function(a, b=2, c) {
cat(really.missing(a), really.missing(b), really.missing(c), fill=TRUE)
}
ff(a=1)
# FALSE FALSE TRUE
有没有更简洁的方法?
【问题讨论】:
-
if(missing(a)){TRUE}? -
您写道,“我想要一个缺失版本,它仅对没有默认值的未提供参数返回 TRUE。”当
a是函数参数时,if(missing(a)) TRUE会这样做。 -
if (missing(a)) TRUE等价于missing(a),只是在提供a时返回NULL。我想要一个函数,当提供a或它具有默认值时返回FALSE,否则返回TRUE。 -
不,这正是我要求的。
标签: r