gpt4 book ai didi

r - 如何绑定(bind)函数参数

转载 作者:行者123 更新时间:2023-12-03 18:27:22 25 4
gpt4 key购买 nike

如何将参数部分绑定(bind)/应用到 R 中的函数?

这就是我走了多远,然后我意识到这种方法行不通......

bind <- function(fun,...)
{
argNames <- names(formals(fun))
bindedArgs <- list(...)
bindedNames <- names(bindedArgs)
function(argNames[!argNames %in% bindedArgs])
{
#TODO
}
}

谢谢!

最佳答案

这是 Curry 的一个版本,它既保留了对函数参数的惰性求值,又构造了一个打印效果适中的函数:

Curry <- function(FUN, ...) {
args <- match.call(expand.dots = FALSE)$...
args$... <- as.name("...")

env <- new.env(parent = parent.frame())

if (is.name(FUN)) {
fname <- FUN
} else if (is.character(FUN)) {
fname <- as.name(FUN)
} else if (is.function(FUN)){
fname <- as.name("FUN")
env$FUN <- FUN
} else {
stop("FUN not function or name of function")
}
curry_call <- as.call(c(list(fname), args))

f <- eval(call("function", as.pairlist(alist(... = )), curry_call))
environment(f) <- env
f
}

它基本上通过以与您自己构建部分绑定(bind)完全相同的方式生成匿名函数来工作。

关于r - 如何绑定(bind)函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6547219/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com