let
次のようなことができる関数を作成しようとしています。
let(a=2, b=3, a+b)
>>> 5
現在、私は立ち往生しています
let <- function(..., expr) {
with(list(...), quote(expr))
}
これはまったく機能しません。どんな助けでも感謝します。
let
次のようなことができる関数を作成しようとしています。
let(a=2, b=3, a+b)
>>> 5
現在、私は立ち往生しています
let <- function(..., expr) {
with(list(...), quote(expr))
}
これはまったく機能しません。どんな助けでも感謝します。
1 つの方法を次に示します。
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
let <- function(a,b, expr=a+b){return(expr)}
let(2,3)
# [1] 5