任意の数の引数を受け取り、それらを評価せずに式として変数に格納する関数が必要です。なんとかできましたmatch.call
が、少し「ぎこちない」ようです。
foo <- function(...) {
expr <- match.call()
expr[[1]] <- expression
expr <- eval(expr)
# do some stuff with expr
return(expr)
}
> bla
Error: object 'bla' not found
> foo(x=bla, y=2)
expression(x = bla, y = 2)
明確化
明確にするために、のように動作する関数の書き方を尋ねていますexpression()
。expression()
説明するには長すぎるため、直接使用することはできません。