对列表中的命名函数和未命名函数套用形式

泰勒

我正在尝试找出如何将许多功能组合成一个新功能。我有确定哪些功能应该组合的代码,并将它们存储在列表中。一些函数共享参数,因此在构建新函数之前,我需要消除重复项。以下作品:

fun1 <- function(x, y) x + y
fun2 <- function(y, z) z * y

funlist <- list(fun1, fun2)
args <- unlist(lapply(funlist, formals)) ## "x", "y", "y", "z"
args <- args[unique(names(args))]        ## "x", "y", "z" 

此时,args是具有三个命名元素“ x”,“ y”和“ z”的列表。as.pairlist()构建新功能时,可以将此传递给

但是,如果命名功能列表中的函数,我的代码将中断:

funlist2 <- list(fun1 = fun1, fun2 = fun1)
args2 <- unlist(lapply(funlist2, formals))  ## "fun1.x", "fun1.y", "fun2.y", "fun2.z"
args2 <- args2[unique(names(args2))]  ## "fun1.x", "fun1.y", "fun2.y", "fun2.z"

在此,函数名称位于参数之前,从而使每个参数都是唯一的。如果我调用formals单个列表元素,则不会发生:

formals(funlist[[1]])
formals(funlist2[[1]])
## both return the same dotted pair list, $x, $y

列表元素名称仅在使用时出现lapply我可以用一个临时列表来解决此问题,该列表将从funlist2中删除名称,但是我不明白为什么会这样-为什么将名称强加到形式输出中?

红外光谱仪

您应该在unlist调用之前查看输出

(args2 <- lapply(funlist2, formals))
$fun1
$fun1$x


$fun1$y



$fun2
$fun2$x


$fun2$y

lapply将名称放回顶层,但下一级的名称相同,unlist然后将不同级别的名称连接起来,并用句点将它们连接起来。在第一个实例中,unlist在第一级没有看到任何名称,因此不需要进行任何串联。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

未命名的函数参数

来自分类Dev

未命名的函数参数

来自分类Dev

javascript中的命名函数与未命名函数,并了解分配

来自分类Dev

混合的已命名和未命名函数参数

来自分类Dev

未命名的命名空间,模板化函数和多个包含

来自分类Dev

javascript中的命名与未命名函数,并了解分配

来自分类Dev

未命名函数参数用法

来自分类Dev

清理未命名:0,未命名:1 索引列函数

来自分类Dev

如何在go中引用未命名的函数参数?

来自分类Dev

如何在 swift 函数中引用多个未命名的参数

来自分类Dev

Kotlin:嵌套未命名函数中的此表达式

来自分类Dev

定义未命名的类成员函数?

来自分类Dev

如何调用这个未命名的函数?

来自分类Dev

命名和未命名管道

来自分类Dev

未命名和命名命名空间解析

来自分类Dev

Swift中函数和变量的命名空间

来自分类Dev

在R中给函数命名

来自分类Dev

在C中没有stdarg.h的情况下访问函数中的未命名参数

来自分类Dev

函数中的未命名参数:等效于R的三点

来自分类Dev

在胶水:: glue调用中使用函数的未命名参数...

来自分类Dev

检索未命名结构的类型以在成员函数中使用它

来自分类Dev

我如何doxygen文档函数的未命名参数?

来自分类Dev

定义函数时,指针或引用变量未命名

来自分类Dev

命名空间和自由函数

来自分类Dev

如何在列表理解中引用未命名的变量?

来自分类Dev

如何从单个项目列表中删除未命名的元素?

来自分类Dev

Ada中的未命名记录

来自分类Dev

vtbl中的命名函数指针

来自分类Dev

索引函数中的命名变量