r从列表中调用变量

r从列表中调用变量,r,list,function,input,R,List,Function,Input,我希望能在当前问题上找到一些帮助。我编写了一个函数(F1),它将另一个函数的名称(F2)和一些其他输入作为输入。F2的输入可能不同,我想做的是使用一个列表作为F1的输入,然后使用列表作为F2的输入 F1<-function(input.list,F2){out=F2(input.list)} F1我不确定自己是否完全理解您的意图,但下面的两个示例可以为您指明正确的方向。这里的包装函数为FUN(在您的例子中为F2)提供参数,但也采用它们自己的参数(unique\u F1\u factor)

我希望能在当前问题上找到一些帮助。我编写了一个函数(
F1
),它将另一个函数的名称(
F2
)和一些其他输入作为输入。
F2
的输入可能不同,我想做的是使用一个列表作为
F1
的输入,然后使用列表作为
F2
的输入

F1<-function(input.list,F2){out=F2(input.list)}

F1我不确定自己是否完全理解您的意图,但下面的两个示例可以为您指明正确的方向。这里的包装函数为
FUN
(在您的例子中为
F2
)提供参数,但也采用它们自己的参数(
unique\u F1\u 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\u列表
,您将执行以下操作:

# 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
)