Comment charger un object dans un nom de variable que je spécifie à partir d’un fichier de données R?

Lorsque vous enregistrez une variable dans un fichier de données R à l’aide de la commande save , celle-ci est enregistrée sous le nom de la session qui l’a enregistrée. Lorsque je vais le charger ultérieurement à partir d’une autre session, il est chargé avec le même nom, ce que le script de chargement ne peut probablement pas savoir. Ce nom pourrait remplacer une variable existante du même nom dans la session de chargement. Existe-t-il un moyen de charger en toute sécurité un object à partir d’un fichier de données dans un nom de variable spécifié sans risque de perturber les variables existantes?

Exemple:

Session de sauvegarde:

 x = 5 save(x, file="x.Rda") 

Session de chargement:

 x = 7 load("x.Rda") print(x) # This will print 5. Oops. 

Comment je veux qu’il fonctionne:

 x = 7 y = load_object_from_file("x.Rda") print(x) # should print 7 print(y) # should print 5 

    Si vous enregistrez un seul object, n’utilisez pas un fichier .Rdata , utilisez un fichier .RDS :

     x < - 5 saveRDS(x, "x.rds") y <- readRDS("x.rds") all.equal(x, y) 

    Vous pouvez créer un nouvel environnement, charger le fichier .rda dans cet environnement et récupérer l’object à partir de là. Cependant, cela impose certaines ressortingctions: soit vous connaissez le nom d’origine de votre object, soit un seul object est enregistré dans le fichier.

    Cette fonction renvoie un object chargé à partir d’un fichier .rda fourni. S’il y a plus d’un object dans le fichier, un object arbitraire est renvoyé.

     load_obj < - function(f) { env <- new.env() nm <- load(f, env)[1] env[[nm]] }