я сохраненная функцию под названием «тип» в списке «funList» как такПолучение имени функции после того, как он получил под названием
funList <- list(type = function() {
funname <- ???
print(funname) # should return "type" }
)
В других частях моего кода я называю эту функцию, но никогда по его имя, но вместо того, чтобы его позиция в списке, например:
funList[[1]]()
в действительности функция «тип», конечно, гораздо сложнее, но есть часть в теле функции, которая использует собственное имя функции. Как я могу получить имя, когда я его называю только положением? Другими словами, как я могу использовать последний вызов функции «type».
Вы не создать именованный функцию. Вы создали именованный список. Ваша анонимная функция не имеет возможности узнать о имени, которое вы указали в названном списке. Вам нужно будет создать функцию-обертку, которая одновременно создаст список и функцию, и может создать правильную область для хранения значения. Конечно, это сломается, если вы переименуете список вообще. Что вы на самом деле пытаетесь сделать? Может быть, есть лучший способ. – MrFlick
Я понимаю, спасибо. Очень широко говоря, этот код будет частью специфического DSL, который я пишу, чтобы применять функции к конкретным столбцам в фрейме данных. Мне нужно реализовать его так, чтобы сначала эти функции собирались и сохранялись в контейнере (funList), а затем последовательно применялись к столбцам в фрейме данных. Возможно, имя столбца, т. Е. Тип, также может отображаться как аргумент функции, но я думал, что было бы лучше написать его, как я. В любом случае, я действительно был бы признателен за некоторые подсказки о том, как я мог придумать решения для обертки, которые вы упомянули. –
То, что вы пытаетесь сделать, выполняется в R, используя нестандартную оценку. Это сложный и тонкий предмет. Для хорошего ознакомления см. Http://adv-r.had.co.nz/Computing-on-the-language.html#nse – Paul