Кто-нибудь знает, как написать функцию F, которая принимает вызов функции (например, mean (x = 1:10)) в качестве аргумента и возвращает только имя вызываемая функция (средняя)?извлечение имени вызова функции из вызова функции
Мои лучшие попытки до сих пор приведены ниже
(function(x1){
return(deparse(substitute(x1)))
})(mean(x = 1:10))
### 'mean(x = 1:10)'
Изменение x1 (вызов функции) в выражение перед де-анализа, кажется, не очень помогает: что возвращает
(function(x1){
return(deparse(as.expression(substitute(x1))))
})(mean(x = 1:10))
# "expression(mean(x = 1:10))"
Если это вообще возможно, я бы хотел использовать анонимные функции в качестве аргумента, поэтому F должен вернуться (функция (x) print (x)) для (function (x) print (x)) (1). Если вам нужно какое-либо разъяснение, не стесняйтесь комментировать. Благодарю.
Редактирование 1: просто для того, чтобы отметить, я хотел бы избежать проверки первой скобки и вырезания кода перед ним (для «mean (x = 1:10)», который вернет «mean»), поскольку « плохо (Fun_nAme»на самом деле является юридическое название функции в R.
Вопрос ответ: ответ Джош О'Брайена был совершенен: функция F, что удовлетворяет указанным выше условиям,
F <- function(x) deparse(substitute(x)[[1]])
Он работает для двоичных операторов, стандартных функций и анонимных функций.