В R, когда вы хотите использовать одну или несколько функций внутри другой функции, возможно, есть два пути. Примером функции может быть:Хорошие способы определения функций внутри функции в R
Метод 1:
make.power <- function(n) {
pow <- function(x) {
x^n
}
pow
}
Метод 2:
make.power <- function(n) {
pow(n)
}
pow <- function(x) {
x^n
}
На мой взгляд (но я не уверен), то второй метод является лучше, если у вас много дочерних функций для родительского.
Мои вопросы: 1) Есть ли функциональные различия между двумя способами? Например, как функция передаст переменные или взаимосвязь между дочерними и родительскими функциями и т. Д.
2) какой из них может быть предпочтительным (возможно, более эффективным для вычисления или структурно ясным) для R?
Вы должны прочитать [эту главу] (http://adv-r.had.co.nz/Functions.html#lexical-scoping) информацию о том, как функционируют функции, когда они определены в других функциях. Кроме того, вопрос 1 немного широк (есть различия - в какой ситуации?), А вопрос 2 частично основан на мнениях. –
Я согласен с @DavidRobinson о широте этого вопроса. Я думаю, что основное различие в ваших методах является очевидным: в методе 1 'pow' является только внутренним для' make.power', тогда как в методе 2 является внешним и, следовательно, доступен для других функций. Что предпочтительнее зависит от контекста: есть ли у вас использование 'pow' вне' make.power'? Является ли это в пакете, где вы можете также включить или не экспортировать 'pow'? – Gregor
На самом деле не получается, почему это слишком широко ... сама концепция широка, но пример, который он дает, имеет ясный пример и очень показателен для ленивой оценки R. –