gpt4 book ai didi

r - 如何在 R 中模拟 Lisp 的 let 函数?

转载 作者:行者123 更新时间:2023-12-04 09:16:30 25 4
gpt4 key购买 nike

我正在尝试写一个 let允许我执行以下操作的功能:

let(a=2, b=3, a+b)
>>> 5

目前我坚持
let <- function(..., expr) {
with(list(...), quote(expr))
}

这根本不起作用。任何帮助表示赞赏。

最佳答案

这是一种方法:

let <- function(..., expr) {
expr <- substitute(expr)
dots <- list(...)
eval(expr, dots)
}

let(a = 2, b = 3, expr = a+b)
# [1] 5

编辑 :或者,如果您不想命名待评估的表达式(即通过 expr 将其传入),并且如果您确定它将始终是最后一个参数,您可以做一些事情像这样。
let <- function(...) {
args <- as.list(sys.call())[-1]
n <- length(args)
eval(args[[n]], args[-n])
}

let(a = 2, b = 3, a + b)
# [1] 5

关于r - 如何在 R 中模拟 Lisp 的 let 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10017250/

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