2013-02-15 11 views
31

Ho creato un file di markdown R che inizia caricando un file dal web. Ho trovato la cache = TRUE per essere un po 'instabile quindi voglio inserire una condizione if per controllare il file scaricato prima di scaricarlo.Come controllo l'esistenza di un file locale

codice corrente - Sempre download di file

fileURL <- "https://dl.dropbox.com/u/7710864/courseraPublic/samsungData.rda" 
setInternet2(TRUE) 
download.file(fileURL ,destfile="./data/samsungData.rda",method="auto") 
load("./data/samsungData.rda") 

codice desiderato - caricare solo se se non già scaricato

destfile="./data/samsungData.rda"  
fileURL <- 
"https://dl.dropbox.com/u/7710864/courseraPublic/samsungData.rda" 
if (destFile doesNotExist) { 
    setInternet2(TRUE) 
    download.file(fileURL ,destfile,method="auto") } 
    load("./data/samsungData.rda") 
} 
load(destfile) 

Cosa sintassi mi darà la condizione "destfile doesNotExist"

risposta

39

È possibile utilizzare tryCatch

if(!file.exists(destfile)){ 
    res <- tryCatch(download.file(fileURL, 
           destfile="./data/samsungData.rda", 
           method="auto"), 
       error=function(e) 1) 
    if(dat!=1) load("./data/samsungData.rda") 
} 
16

Come per la risposta data da @agstudy

destfile="./data/samsungData.rda" 
fileURL <- 
"https://dl.dropbox.com/u/7710864/courseraPublic/samsungData.rda" 
if (!file.exists(destfile)) { 
    setInternet2(TRUE) 
    download.file(fileURL ,destfile,method="auto") } 
    load("./data/samsungData.rda") 
} 
load(destfile) 
+4

non è necessario includere il 'load (". Dati/samsungData.rda ")' nel blocco condizionale, poiché lo si sta caricando due volte se il file non esiste. – hugovdberg

3

Un modo semplice per verificare l'esistenza di un file nella directory di lavoro è: che (list.files() == "NameOfFile .csv ")

Questo non risponde esattamente alla sua domanda, ma ho pensato che questo potrebbe essere utile a qualcuno che vuole semplicemente verificare se un determinato file è presente nella loro directory.

Problemi correlati