Вставьте имя функции в вызов

#r

Вопрос:

У меня есть длинный сценарий, в котором вверху есть раздел, посвященный предположениям и другим жестким кодам. С помощью контекста это сценарий распределения активов, в котором одним из выбранных жестких кодов является метод, с помощью которого рассчитывается импульс, для которого у меня есть различные функции. Я понимаю, что один из способов, которым я мог бы изменить код, — это просто изменить функцию, используемую в тексте кода; однако я предпочел бы оставить тело нетронутым и изменить только имя функции, которая будет использоваться в разделе предположения.

С помощью чрезвычайно простого игрушечного примера предположим, что у меня есть следующие две строки кода:

 selected_function = "sum" temp_data = c(2,3,4)  

Как бы я позволил любой функции, сохраненной в переменной selected_function , Быть вызывающей функцией в temp_data наборе данных (т. Е., Если я хочу изменить ее на «среднее значение» и т. Д.) И разрешить применение этой функции к данным.

Ответ №1:

Если у вас есть имя функции в виде строки, вы можете получить саму функцию с getFunction() помощью get . Это вернет функцию, и затем вы сможете передать свои значения этой возвращаемой функции. Например.

 selected_function = "sum" temp_data = c(2,3,4) getFunction(selected_function)(temp_data)