Jak zapobiec funkcjom zanieczyszczającym globalną przestrzeń nazw?

Mój projekt R staje się coraz bardziej złożony i zaczynam szukać jakiejś konstrukcji równoważnej klasom w Javie / C # lub modułom w Pythonie, aby moja globalna przestrzeń nazw nie była zaśmiecona funkcjami, które nigdy nie są używane poza jeden konkretny plik .r.

Myślę więc, że moje pytanie brzmi: w jakim stopniu możliwe jest ograniczenie zakresu funkcji do określonego pliku .r lub podobnego?

Myślę, że mogę po prostu przekształcić cały plik .r w jedną gigantyczną funkcję i umieścić w nim funkcje, ale to nie pasuje do echa:

myfile.r:

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

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

Wydajność:

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

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

> myfile()
> 

Widać, że „123” nie jest drukowane, mimo że użyliśmyecho=T wsource dowództwo.

Zastanawiam się, czy istnieje jakaś inna konstrukcja, która jest bardziej standardowa, ponieważ umieszczenie wszystkiego wewnątrz jednej funkcji nie brzmi jak coś, co jest naprawdę standardowe? Ale może tak jest? Ponadto, jeśli to oznaczaecho=T działa, to jest dla mnie pewny bonus.

questionAnswers(3)

yourAnswerToTheQuestion