¿Cómo evitar que las funciones contaminen el espacio de nombres global?

Mi proyecto R se está volviendo cada vez más complejo, y estoy empezando a buscar una construcción que sea equivalente a las clases en Java / C #, o los módulos en python, para que mi espacio de nombres global no se llene de funciones que nunca se usan fuera de un archivo .r particular.

Entonces, supongo que mi pregunta es: ¿en qué medida es posible limitar el alcance de las funciones dentro de un archivo .r específico o similar?

Creo que puedo convertir todo el archivo .r en una función gigante, y poner funciones dentro de eso, pero eso confunde con el eco:

myfile.r:

myfile <- function() {
    somefunction <- function(a,b,c){}
    anotherfunction <- function(a,b,c){}

    # do some stuff here...
    123
    456
    # ...
}
myfile()

Salida:

> source("myfile.r",echo=T)

> myfile <- function() {
+     somefunction <- function(a,b,c){}
+     anotherfunction <- function(a,b,c){}
+ 
+     # do some stuff here...
+     # . .... [TRUNCATED] 

> myfile()
> 

Se puede ver que "123" no se imprime, aunque usamosecho=T en elsource mando.

Me pregunto si hay alguna otra construcción que sea más estándar, ya que poner todo dentro de una sola función no suena como algo realmente estándar. Pero tal vez sea así? Además, si eso significa queecho=T Funciona entonces eso es una ventaja definitiva para mí.

Respuestas a la pregunta(3)

Su respuesta a la pregunta