2012-03-02 11 views
5

Co próbuję zrobić, to załadować plik danych z lokalnego katalogu. Jeśli go nie ma, pobierz go z serwera WWW. Obecnie używam zagnieżdżonej tryCatch i wygląda na to, że działa. Czy jest to właściwy sposób na wykonanie tego zadania w R?Załaduj plik danych w R za pomocą tryCatch

tryCatch( 
    { 
    #attempt to read file from current directory 
    # use assign so you can access the variable outside of the function 
    assign("installations", read.csv('data.csv'), envir=.GlobalEnv) 
    print("Loaded installation data from local storage") 
    }, 
    warning = function(w) 
    { 
    print()# dummy warning function to suppress the output of warnings 
    }, 
    error = function(err) 
    { 
    print("Could not read data from current directory, attempting download...") 
    #attempt to read from website 
    tryCatch(
    { 
     # use assign so you can access the variable outside of the function 
     assign("installations", read.csv('http://somewhere/data.csv'), envir=.GlobalEnv) 
     print("Loaded installation data from website") 
    }, 
    warning = function(w) 
    { 
     print()# dummy warning function to suppress the output of warnings 
    }, 
    error = function(err) 
    { 
     print("Could not load training data from website!! Exiting Program") 
    }) 
    }) 

Odpowiedz

12

Możesz użyć funkcji file.exists(f), aby sprawdzić, czy plik istnieje.

Oczywiście mogą wystąpić inne błędy, takie jak uprawnienia lub problemy z formatowaniem plików, więc możesz chcieć zawinąć wszystko w blokadę try.