我正在使用两个函数,比如说Fun1
和Fun2
,它们都定义在一个包中,所以我无法更改它们。Fun1
调用Fun2
如下:
Fun1(x=a_number,y=a_string,fn=Fun2,...)
...
使用的参数在哪里Fun2
。
Fun1
呼唤Fun2
它的名字也是如此。如何在Fun2
不显式调用参数名称的情况下传递参数?
假设这args
是我要传递给的参数列表Fun2
。如果我只想打电话,很 Fun2
容易如下:
do.call(Fun2,args)
但是如果被它的名字Fun2
调用,这种方式是行不通的。Fun1
唯一的方法是显式编写参数,如下所示:
Fun1(x=a_number,y=a_string,fn=Fun2,param1=sth,param2=some_other_thing)
但是这种方式对我不起作用,因为Fun2
(不仅仅是 2 个)的参数太多,而且我不知道用户想要更改哪些参数。也许用户只是想更改 param1,并将其他参数保留为默认值。
顺便说一句,以下内容不起作用,因为Fun1
它的“fn”参数只接受函数名称:
Fun1(x=a_number,y=a_string,fn=do.call(Fun2,args))
编辑1:
fn=Fun2 (...)
不起作用,因为“fn”参数Fun1
只获取函数的名称,没有别的。
编辑2:
实际上Fun1
isbaggedModel
和Fun2
is auto.arima
,它们都在预测包中。这是一个例子:
vec.ts=ts(1:27,start=c(2016,1),frequency=12) #time series
num_blocks=3
block_size=24
baggedModel(vec.ts,
bootstrapped_series = bld.mbb.bootstrap(vec.ts,num_blocks,block_size),
fn=auto.arima,...)
因此,我正在寻找一种方法将一些参数传递给函数...
将使用的部分auto.arima
,而不明确提及参数的名称。