remove + get

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

VERDIER Guillaume
Messages : 11
Enregistré le : 11 Jan 2020, 20:27

remove + get

Messagepar VERDIER Guillaume » 24 Jan 2020, 10:32

Bonjour,
Pour aller chercher une base dans une liste de plusieurs bases, dans une boucle For (i in intervalle) {}, j'utilise la fonction get(paste0("truc",i)) ça convient parfaitement.
On peut ainsi lister les tables de cette base, comme par ex ls(get(paste0("truc",i))).
En revanche l'instruction remove(get(paste0("truc",i))) ne fonctionne pas.
Une idée pourquoi ?
Cordialement

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

Re: remove + get

Messagepar Pierre-Yves Berrard » 24 Jan 2020, 10:54

Bonjour,
En revanche l'instruction remove(get(paste0("truc",i))) ne fonctionne pas.

Un message d'erreur ?
PY

VERDIER Guillaume
Messages : 11
Enregistré le : 11 Jan 2020, 20:27

Re: remove + get

Messagepar VERDIER Guillaume » 24 Jan 2020, 10:57

Message d'erreur suivant :

Error in remove(get(paste0("truc",i))) :
... doit contenir des noms ou des chaînes de caractères


Merci

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

Re: remove + get

Messagepar Pierre-Yves Berrard » 24 Jan 2020, 11:03

Il faut utiliser le paramètre list de la fonction remove (aussi appelée rm).
Également enlever get car on veut utiliser le nom, pas la valeur.

Code : Tout sélectionner

remove(list = paste0("truc", i))

Le message d'erreur n'est pas très cohérent avec l'aide de la fonction qui dit bien : Use the list argument to specify objects via a character vector.
PY

VERDIER Guillaume
Messages : 11
Enregistré le : 11 Jan 2020, 20:27

Re: remove + get

Messagepar VERDIER Guillaume » 24 Jan 2020, 11:07

nickel
bonne journée

Logez Maxime
Messages : 3138
Enregistré le : 26 Sep 2006, 11:35

Re: remove + get

Messagepar Logez Maxime » 24 Jan 2020, 13:32

Bonjour,
Pierre-Yves Berrard a écrit :Le message d'erreur n'est pas très cohérent avec l'aide de la fonction qui dit bien : Use the list argument to specify objects via a character vector.

Au contraire c'est très cohérent. Quand tu fais get("x") tu récupères un objet mais pas son nom. La sortie de get c'est un objet "temporaire" comme quand on fait par exemple rnorm(5).
Si tu veux vraiment supprimer un objet alors il te faut utiliser rm mais avec pour argument le nom de l'objet (et non pas un objet temporaire issu de get, sinon ça reviendrait à vouloir supprimer un objet temporaire). Le plus simple c'est de se servir de ce nom en chaîne de caractères, d'où l'obligation d'utiliser l'argument list = ...

Cordialement,
Maxime


Retourner vers « Questions en cours »

Qui est en ligne

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

cron