Comment renommer un dataframe ?

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

Jean-Paul Robin
Messages : 4
Enregistré le : 04 Mai 2016, 14:28

Comment renommer un dataframe ?

Messagepar Jean-Paul Robin » 11 Juin 2020, 14:13

Bonjour,
J'ai des opérations de manipulations de données à réaliser à partir de 40 fichiers .Rdata
Quand j'utilise la fonction load("Nom_du_fichier.Rdata") j'obtiens en mémoire un dataframe qui a pour nom "Nom_du_fichier".
Comme j'ai 40 fois les mêmes opérations à réaliser je voudrais pouvoir renommer ce dataframe
par exemple l'appeler "data_en_cours" pour avoir dans mon script une boucle qui utilise "data_en_cours" tout le temps et pas les 40 noms de fichier différents.
Plutôt que de renommer si l'opération consiste à verser le contenu du dataframe "Nom_du_fichier" dans "data_en_cours" ça me va aussi.
Merci pour votre aide
Jean-Paul Robin

Pierre-Yves Berrard
Messages : 1029
Enregistré le : 12 Jan 2016, 23:30

Re: Comment renommer un dataframe ?

Messagepar Pierre-Yves Berrard » 11 Juin 2020, 14:18

Bonjour,

Les fonctions saveRDS et readRDS pourraient vous être utiles.

La différence par rapport aux fonctions save et load est que ces fonctions stockent un seul objet dans un fichier, sans le nom.

Ceci permet d'écrire :

Code : Tout sélectionner

data_en_cours <- readRDS("Nom_du_fichier.rds")
PY

Jean-Paul Robin
Messages : 4
Enregistré le : 04 Mai 2016, 14:28

Re: Comment renommer un dataframe ?

Messagepar Jean-Paul Robin » 11 Juin 2020, 17:14

Bonjour
Ce serait une très bonne idée si ça marchait !
Hélas, j'ai le code d'erreur suivant :
Error in readRDS(FileNm) : unknown input format

# pourinfo l'objet FileNm contient la chaîne de caractère suivante "calmar2000_brut.RData"
# (du nom de l'un de mes nombreux fichiers .RData à manipuler

Merci quand même
Jean-Paul Robin

François Bonnot
Messages : 537
Enregistré le : 10 Nov 2004, 15:19
Contact :

Re: Comment renommer un dataframe ?

Messagepar François Bonnot » 12 Juin 2020, 06:15

Bonjour,

Code : Tout sélectionner

data_en_cours <- eval(as.name(load("Nom_du_fichier.Rdata")))


EDIT: Avec cette méthode, le fichier est d'abord chargé puis le data.frame recopié dans data_en_cours. Après lecture de 40 fichiers, les 40 data.frames (+ data_en_cours) seront donc en mémoire. Pour éviter cela, il est préférable de passer par une fonction:

Code : Tout sélectionner

load.file <- function(file) eval(as.name(load(file)))
data_en_cours <- load.file("Nom_du_fichier.Rdata")
François

Mickael Canouil
Messages : 1315
Enregistré le : 04 Avr 2011, 08:53
Contact :

Re: Comment renommer un dataframe ?

Messagepar Mickael Canouil » 12 Juin 2020, 10:57

Bonjour,

si exploitez des fichiers rds, en utilisant la fonction de lecture prévu pour ces fichiers :

Code : Tout sélectionner

my_file <- tempfile(fileext = ".rds")  
saveRDS
(object = letters, file = my_file)

assign("x", readRDS(my_file))
x
#>  [1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" "p" "q" "r" "s"
#> [20] "t" "u" "v" "w" "x" "y" "z"

<- readRDS(my_file)
y
#>  [1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" "p" "q" "r" "s"
#> [20] "t" "u" "v" "w" "x" "y" "z"     

ls()
#> [1] "my_file" "x"       "y" 

Si vous utilisez des fichiers Rdata :

Code : Tout sélectionner

my_file <- tempfile(fileext = ".Rdata")
save(object = letters, file = my_file)

assign("x", get(load(my_file)))
x
#>  [1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" "p" "q" "r" "s"
#> [20] "t" "u" "v" "w" "x" "y" "z"

<- get(load(my_file))
y
#>  [1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" "p" "q" "r" "s"
#> [20] "t" "u" "v" "w" "x" "y" "z"

ls()
#> [1] "letters" "my_file" "x"       "y"  


PS : comme l'a indiqué François, a priori l'usage d'une fonction est recommandé dans votre cas.

Cordialement,
Mickaël
mickael.canouil.fr | rlille.fr


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité