[英]setting a function argument default value as a variable value at the time of creation of the function
創建函數時,是否可以將參數的默認值設置為變量的值來創建函數?
Something like,
a=1
fn = function(arg1 = a) {
print (arg1+1)
}
fn
會顯示
function(arg1 = 1) {
print (arg1+1)
}
一種方法是在R中使用全局選項:
fn <- function(arg1 = getOption("arg1", 1)) {
print(arg1 + 1)
}
fn() # returns 2
options(arg1 = 5)
fn() # returns 6
fn(2) # returns 3
options(arg1 = NULL)
fn() # returns 2 again
我認為,與在.GlobalEnv中使用全局變量相比,上述解決方案更干凈,但是這也是在.GlobalEnv中使用全局變量的方法:
fn2 <- function(arg1 = if( is.null(.GlobalEnv[["a"]]) ) 1 else .GlobalEnv[["a"]]) {
print(arg1+1)
}
fn2() # this returns an empty vector
a <- 5
fn2() # this returns 6
通過bquote
功能的幫助得到幫助。 這就是我為我工作的東西。
它對我來說並不直接,但可以。
a=1
fn <- eval(bquote( function(arg1 = .(a)) {
print (arg1+1)
} ))
fn
fn(3)
eval(bquote())
和.(a)
是重點。
我找到了方法,但我不完全理解。 因此,任何人都可以幫助我了解它的工作原理,我很樂意將其作為答案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.