Como evitar funções poluindo o namespace global?

Meu projeto R está ficando cada vez mais complexo, e estou começando a procurar por alguma construção que seja equivalente a classes em Java / C #, ou módulos em python, para que meu namespace global não fique cheio de funções que nunca são usadas fora de um arquivo .r particular.

Então, eu acho que a minha pergunta é: até que ponto é possível limitar o escopo de funções dentro de um arquivo .r específico ou similar?

Eu acho que posso fazer todo o arquivo .r em uma função gigante, e colocar funções dentro disso, mas isso atrapalha o eco:

myfile.r:

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

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

Saída:

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

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

> myfile()
> 

Você pode ver que "123" não é impresso, embora tenhamos usadoecho=T nosource comando.

Eu estou querendo saber se existe alguma outra construção que é mais padrão, já que colocar tudo dentro de uma única função não soa como algo que é realmente padrão? Mas talvez seja? Além disso, se isso significa queecho=T funciona, então isso é um bônus definitivo para mim.

questionAnswers(3)

yourAnswerToTheQuestion