2014-07-16 1 views
3

J'écris un code simple dans R où je vérifie si le fichier existe dans le répertoire de travail et si ce n'est pas le cas, je télécharge un fichier zip avec les données et décompresser dans R. Comme il arrive, si le fichier existe les objets R correspondant à binaire (getBinaryURL) et la connexion au fichier sont connectés. Je voudrais les enlever après le téléchargement réussi. J'ai rédigé ces une phrase si les déclarations, mais ils retournent l'erreur Erreur dans exists (bin): premier argument invalide. Il est intermédiaire évident pour moi ce qui ne va pas avec la syntaxe.Une ligne si déclaration dans R - invalide premier argument

if (exists(bin)) rm(bin) 
if (exists(con)) rm(con) 
if (exists(dataurl)) rm(dataurl) 

Répondre

9

Votre déclaration if() est pas le problème, vous devez citer l'objet passé à exists().

> AnObject <- seq(1:10) 
> exists(AnObject) 
Error in exists(AnObject) : invalid first argument 
> exists("AnObject") 
[1] TRUE 
+0

Merci beaucoup. Je comprends que je n'ai pas à citer l'objet dans la déclaration ** rm **? – Konrad

+0

@Konrad C'est correct. La majorité des fonctions prennent le nom sans guillemets d'un objet plutôt que de le citer; la meilleure chose à faire lorsque vous utilisez une fonction nouvelle ou inconnue et obtenez une erreur est de vérifier son fichier d'aide pour plus d'informations. Si vous tapez '? Exists', vous pouvez vérifier comment l'objet est spécifié dans la section" Arguments ", ainsi que des exemples de la façon dont il est utilisé en bas de la page. – nrussell