Есть ли способ, если функция передана как параметр, чтобы изменить строку входного параметра перед ее оценкой?
Вот псевдокод того, чего я надеюсь достичь:
test.func <- function(a, b) {
# here I want to alter the b expression before evaluating it:
b(..., val1=a)
}
Учитывая, что вызов функции передан в b
, я хочу добавить a
в качестве другого параметра, при этом не нужно всегда указывать ...
в вызове b
. Таким образом, результат этого test.func
вызова должен быть:
test.func(a="a", b=paste(1, 2))
"1" "2" "a"
Редактировать :
Другим способом, который я мог бы увидеть, делая что-то подобное, было бы, если бы я мог назначить дополнительный параметр в пределах родительской функции (опять же, как псевдокод); в этом случае a
будет в пределах t1 и, следовательно, t2, но не будет глобально назначен:
t2 <- function(...) {
paste(a=a, ...)
}
t1 <- function(a, b) {
local( { a <<- a; b } )
}
t1(a="a", b=t2(1, 2))
Это немного похоже на карри в том смысле, что я вкладываю параметр в саму функцию.
Редактировать 2 :
Просто добавлю еще один комментарий к этому: я понимаю, что одним из связанных подходов может быть использование « программирования на основе прототипов » таким образом, чтобы все было унаследовано (что может быть достигнуто с помощью прото пакет ). Но я надеялся на более простой способ простого изменения входных параметров перед вычислением в R.