Мой проект R становится все более сложным, и я начинаю искать какую-либо конструкцию, эквивалентную классам в Java/С#, или модули на python, так что мое глобальное пространство имен не будет завалено функциями, которые никогда не будут используется вне одного файла .r.
Итак, я думаю, мой вопрос: насколько можно ограничить объем функций в пределах определенного файла .r или аналогичного?
Я думаю, что могу просто сделать весь файл .r в одну гигантскую функцию и поместить туда функции, но это бесполезно с эхом:
myfile.r:
myfile <- function() {
somefunction <- function(a,b,c){}
anotherfunction <- function(a,b,c){}
# do some stuff here...
123
456
# ...
}
myfile()
Вывод:
> source("myfile.r",echo=T)
> myfile <- function() {
+ somefunction <- function(a,b,c){}
+ anotherfunction <- function(a,b,c){}
+
+ # do some stuff here...
+ # . .... [TRUNCATED]
> myfile()
>
Вы можете видеть, что "123" не печатается, хотя мы использовали echo=T
в команде source
.
Мне интересно, есть ли какая-то другая конструкция, которая более стандартная, поскольку помещение всего внутри одной функции не звучит как что-то действительно стандартное? Но возможно? Кроме того, если это означает, что echo=T
работает, это для меня определенный бонус.