Как создать набор из R-функций, которые имеют доступ к одной и той же частной переменной?Как создать R-функции с частными переменными?
Предположим, я хочу создать readSetting(key)
и writeSetting(key,value)
функции, которые работают в одном и том же скрытом списке settings
. Если бы я попробовать вот так ...
local({
settings <- list()
readSetting <<- function (key) settings[[key]]
writeSetting <<- function (key, value) settings[[key]] = value
})
... тогда readSetting
и writeSetting
не видны снаружи local
вызова. Если я хочу, чтобы они были видны там, я должен сначала назначить
readSetting <- writeSetting <- NULL
вне local
вызова. Должен быть лучший способ, потому что мой код не СУХОЙ, если я должен сказать двумя разными способами, какие переменные являются общедоступными.
(Контекст этой работы является то, что я разрабатываю пакет R, и этот код будет в качестве вспомогательного файла, загруженного в основной файл через source
.)
Этот вопрос связан с How to limit the scope of the variables used in a script? но ответы там не решают мою проблему.
Вы можете посмотреть, как 'knitr' обрабатывает свои параметры (что похоже на' base :: options') в качестве примера. – Gregor
Возможно, я немного замедлен, @ Грегор, но у меня проблемы с подключением. – Nathan
Речь идет о единственном пакете, который я могу придумать, который имеет глобальные параметры, которые часто меняются. Параметры chunk можно было бы сделать невидимыми (более или менее), если 'knitr' не экспортировал' opts_chunk'. – Gregor