#r
#r
Вопрос:
Я хотел бы создать функцию R, которая является «помощником» для пользователей, чтобы создавать свои собственные, новые функции. Пользователь передает код в качестве аргумента, и он включается в новую функцию.
Я почти уверен, что для этого требуется нестандартная оценка, и я проверил предыдущие ответы на StackOverflow, а также главу NSE в Advanced R, но просто не могу ее взломать. Кто-нибудь знает, как заставить следующий код работать и возвращать 3?
create_new_function <- function(f){
task <- function(a, b){
f #how do I make f evaluate here as a b?
}
return(task)
}
user_function <- create_new_function(a b)
user_function(1,2)
Я не хочу, чтобы пользователь должен был передавать (a, b) при создании функции, но иметь доступ к ним при ее вызове, поэтому она вложенная.
Комментарии:
1. вы не передаете функцию, вы передаете
expression
Ответ №1:
create_new_function <- function(f){
express <- substitute(f)
task <- function(a, b){
return(eval(express))
}
return(task)
}
user_function <- create_new_function(a b)
print(user_function(1,2))
Комментарии:
1. фардарта обновил ответ. Теперь все в порядке, спасибо!