web-dev-qa-db-fra.com

Définissez toutes les fonctions dans un fichier .R, appelez-les à partir d'un autre fichier .R. Comment, si possible?

Comment appeler les fonctions définies dans le fichier abc.R dans un autre fichier, par exemple xyz.R?

Une autre question est: comment appeler les fonctions définies dans abc.R à partir de l'invite R/de la ligne de commande?

84
G Shah

Vous pouvez appeler source("abc.R") suivi de source("xyz.R") (en supposant que ces deux fichiers se trouvent dans votre répertoire de travail actuel.

Si abc.R est:

fooABC <- function(x) {
    k <- x+1
    return(k)
}

et xyz.R est:

fooXYZ <- function(x) {
    k <- fooABC(x)+1
    return(k)
}

alors cela fonctionnera:

> source("abc.R")
> source("xyz.R")
> fooXYZ(3)
[1] 5
> 

Même s'il existe des dépendances cycliques, cela fonctionnera.

Par exemple. Si abc.R est la suivante:

fooABC <- function(x) {
    k <- barXYZ(x)+1
    return(k)
}

barABC <- function(x){
    k <- x+30
    return(k)
}

et xyz.R est la suivante:

fooXYZ <- function(x) {
    k <- fooABC(x)+1
    return(k)
}

barXYZ <- function(x){
    k <- barABC(x)+20
    return(k)
}

puis,

> source("abc.R")
> source("xyz.R")
> fooXYZ(3) 
[1] 55
>
123
A_K