簡體   English   中英

在創建函數時將函數參數默認值設置為變量值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM