是否可以在运行时更改R函数中形式参数的默认值?
我们假设,我们有函数
f <- function(x=1) {
...
}
我可以以某种方式将x的默认值从1更改为,比方说2?
提前谢谢,
斯文
答案 0 :(得分:5)
是的,Defaults包允许您这样做。
答案 1 :(得分:1)
替代方案(显示在不同的SO post中)是使用formals
函数,例如:
formals(f) <- 2
答案 2 :(得分:0)
由于CRAN不再提供Defaults软件包,因此您可以使用default。
例如:
x <- list(a = 1, b = 2, c = 3)
default::default(unlist) <- list(use.names = FALSE)
unlist(x)
#> [1] 1 2 3
unlist <- default::reset_default(unlist)
unlist(x)
#> a b c
#> 1 2 3
由reprex package(v0.2.0.9000)于2019-03-22创建。
答案 3 :(得分:0)
我尝试对packagefinder
库进行相同的参数包装,该库的别名为fp()
指向findPackage()
。我尝试了各种方法,包括使用 formals()
,但最后,唯一对我有用的是以下3种变体:
#--------------------------------------
# packagefinder
#--------------------------------------
# fp = findPackage
# Set default to use:
# fp(... , display = "console", return.df = TRUE)
#--------------------------------------
fp <- function(...) {
packagefinder::fp(..., display="console", return.df=TRUE)
}
fp <- function(...) invisible(findPackage(..., display="console", return.df=TRUE))
fp <- function(..., display="console", return.df=TRUE) packagefinder::fp(...,display=display, return.df=return.df)
formals()方法,我不能开始工作。
# Fail-1
formals(fp) <- alist(... = , display="console", return.df=TRUE)
# Fail-2
MY_ARGS <- list(display="console", return.df=TRUE)
formals(fp)[names(MY_ARGS)] <- MY_ARGS
与此相关的其他相关帖子: