我不确定我是否完全理解您要执行的操作,但以下两个示例可以为您指明正确的方向。这里的包装函数为FUN(在您的情况下为F2)提供参数,但也接受它们自己的参数(unique_F1_factor)。
首先,如果您想使用提供给包装器F1 的参数列表,那么我建议在函数体中使用do.call,如下所示:
# If you want to work with lists ----
F1_list = function(input_list,unique_F1_factor,FUN) {
out = do.call(FUN, input_list)
# Do stuff in F1, e.g.:
out=unique_F1_factor*out
return(out)
}
或者,您可以完全避免使用列表:
# Wrapper function ----
F1 = function(...,unique_F1_factor,FUN) {
out=FUN(...)
# Do stuff in F1, e.g.:
out=unique_F1_factor*out
return(out)
}
*请注意,如果使用rnorm 等随机数生成器,即使您指定set.seed,do.call(rnorm, args) 和rnorm(args) 的结果也会有所不同。
希望这会有所帮助!
编辑
只是为了澄清在每种情况下您将如何提供参数。对于F1_list,你会这样做:
# Example with list:
F1_list(
list(sd=1,mean=3,n=10),
unique_F1_factor = 10,
FUN = rnorm
)
如果您想避开该列表,请执行以下操作:
# Example w/o list ----
F1(
sd=1,
mean=3,
n=10,
unique_F1_factor = 10,
FUN = rnorm
)