Combinez attach
y sys.source
de s'introduire dans un environnement et d'attacher cet environnement. Ici, j'ai deux fonctions dans le fichier my_fun.R
:
foo <- function(x) {
mean(x)
}
bar <- function(x) {
sd(x)
}
Avant que je ne charge ces fonctions, elles ne sont évidemment pas trouvées :
> foo(1:10)
Error: could not find function "foo"
> bar(1:10)
Error: could not find function "bar"
Créer un environnement et y déposer le fichier :
> myEnv <- new.env()
> sys.source("my_fun.R", envir = myEnv)
Toujours pas visible car nous n'avons rien attaché.
> foo(1:10)
Error: could not find function "foo"
> bar(1:10)
Error: could not find function "bar"
et lorsque nous le faisons, ils sont visibles, et parce que nous avons attaché une copie de l'environnement au chemin de recherche, les fonctions survivent en étant rm()
-.. :
> attach(myEnv)
> foo(1:10)
[1] 5.5
> bar(1:10)
[1] 3.027650
> rm(list = ls())
> foo(1:10)
[1] 5.5
Je pense toujours que vous seriez mieux avec votre propre paquet personnel, mais ce qui précède pourrait suffire en attendant. N'oubliez pas que la copie sur le chemin de recherche n'est que cela, un copie . Si les fonctions sont assez stables et que vous ne les éditez pas, alors ce qui précède peut être utile, mais c'est probablement plus de tracas que cela n'en vaut la peine si vous développez les fonctions et les modifiez.
Une deuxième option est de les nommer tous .foo
plutôt que foo
como ls()
ne renverra pas d'objets nommés ainsi, sauf si l'argument all = TRUE
est réglé :
> .foo <- function(x) mean(x)
> ls()
character(0)
> ls(all = TRUE)
[1] ".foo" ".Random.seed"