J'essaie d'écrire une fonction qui supprime un objet s'il existe. La raison en est que je veux me débarrasser de l'erreur de messagerie de journal: objet 'arg' introuvable. J'ai essayé ce qui suit: malheureusement, cela ne supprime pas l'objet s'il existe p> onces de ce que je fais mal ici? < / p> meilleur albrecht p> p>
4 Réponses :
C'est une sorte de laid, mais il semble fonctionner: Vous pouvez spécifier l'environnement différemment si vous n'élevez pas les noms de l'environnement de niveau supérieur. p> p>
Un idiome général pour saisir ce que l'utilisateur fourni sous forme d'argument à une fonction est où je suppose que vous ne voulez jamais supprimer les objets de l'environnement global, d'où la valeur par défaut, mais vous pouvez fournir Un environnement via déparss (substitut (FOO)) code>. Cette fonction est similaire à celle de @ian Ross mais employant cet idiome standard: env code>. Et ici, il est en action: p>
Il faut ajouter un avertissement selon lequel l'utilisation de DeParse (substitut ()) dans une fonction imbriquée est liée à donner problème. MYRM <- Fonction (x) IFRM (X) ne fera pas ce que vous pensez qu'il ...
@Joris +1 Bon point, mais on pourrait alors dire, ne fais pas ça! ;-)
Gardez-le simple. Il suffit de transmettre le nom de l'objet dans votre fonction sous forme de chaîne de caractères, plutôt que d'essayer d'obtenir le nom de l'objet réel.
ifrm <- function(x, env = globalenv())
{
if(exists(x, envir = env))
{
rm(list = x, envir = env)
}
}
Essayez ceci
Cela ressemble à une chose éventuellement dangereuse à faire. Voulez-vous nous donner un peu plus de détails sur les circonstances où vous obtenez cette erreur? Il peut y avoir d'autres moyens de traiter votre message d'erreur plus approprié.
Je suis d'accord avec Andrie. Les réponses fournies feront ce que vous avez demandé, mais probablement ce que vous devriez réellement faire est encore plus simple. Jetez un coup d'œil à essayer et trycatch. Qu'est-ce que vous essayez de faire cela évite de traiter des objets inexistants?