R 在创建函数时将函数参数默认值设置为变量值

R 在创建函数时将函数参数默认值设置为变量值,r,function,R,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 opti

我可以创建一个参数的默认值设置为创建时变量值的函数吗

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

fn由
bquote
功能的帮助提供帮助。这是我发现为我工作的东西

它不直接期待我,但它的工作

a=1
fn <- eval(bquote( function(arg1 = .(a)) {
    print (arg1+1)
} ))
fn
fn(3)
a=1

fn我会使用bquote或替换词,然后评估表达式。谢谢你的提示。你能详细说明一下它是如何工作的吗。。。我知道怎么做了,但我不确定我是否完全理解它的工作原理…谢谢。这可能是一种方法,它是语言的基础计算。构造一个表达式,然后对其求值。这样可以确保默认函数参数是值而不是符号。
a=1
fn <- eval(bquote( function(arg1 = .(a)) {
    print (arg1+1)
} ))
fn
fn(3)