Передать код функции R в качестве аргумента

#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. фардарта обновил ответ. Теперь все в порядке, спасибо!