在R上应用任意函数的函数

问题描述

| 如何在R中实现函数
apply.func(func,arg.list)
,该函数将任意函数
func
和合适的列表
arg.list
作为参数,并返回用
arg.list
中包含的参数调用
func
的结果。例如。
apply.func(foo,list(x=\"A\",y=1,z=TRUE))
相当于
foo(x=\"A\",z=TRUE)
谢谢! 附言FWIW,相当于ѭ7的Python类似于
def apply_func(func,arg_list):
    return func(*arg_list)
要么
def apply_func(func,kwarg_dict):
    return func(**kwarg_dict)
或其某些变体。     

解决方法

        我想找10英镑是您要找的东西。您可以通过
?do.call
阅读。 人们如何使用“ 10”的经典示例是将“ 13”个数据帧或矩阵一起使用:
d1 <- data.frame(x = 1:5,y = letters[1:5])
d2 <- data.frame(x = 6:10,y = letters[6:10])

do.call(rbind,list(d1,d2))
这是另一个使用
sum
的琐碎示例:
do.call(sum,list(1:5,runif(10)))
    ,        R允许将函数作为参数传递给函数。这意味着您可以按以下方式定义
apply.func
(其中
f
是函数,而
...
表示所有其他参数:
apply.func <- function(f,...)f(...)
然后,您可以使用ѭ7来指定参数有意义的任何函数:
apply.func(paste,1,2,3)
[1] \"1 2 3\"

apply.func(sum,3)
[1] 6
但是,请注意,以下内容可能不会产生预期的结果,因为
mean
将向量作为参数:
apply.func(mean,3)
[1] 1
请注意,还有一个称为
do.call
的基本R函数,可以有效地执行相同的操作。