2013-02-15 16 views
31

Utworzyłem plik oznaczenia R, który rozpoczyna się od wczytania pliku z Internetu. Znalazłem pamięć podręczną = TRUE, aby była trochę niestabilna, więc chcę przed jej pobraniem pobrać warunek if, aby sprawdzić pobrany plik.Jak sprawdzić istnienie pliku lokalnego?

Aktualny Code - Zawsze plik pliki do pobrania

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") 

Pożądany Code - tylko przesłać jeśli jeśli nie jest już pobierany

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) 

Co składnia da mi warunek "DestFile DoesNotExist"

Odpowiedz

39

Można użyć 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

Jak na odpowiedź udzieloną przez @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

nie jest konieczne uwzględnianie 'load (". Data/samsungData.rda ") w bloku warunkowym, ponieważ ładujesz go dwukrotnie, jeśli plik nie istnieje. – hugovdberg

3

Łatwym sposobem sprawdzenia istnienia pliku w katalogu roboczym jest: Które (list.files() == „nameoffile .csv ")

To nie odpowiada dokładnie na jego pytanie, ale pomyślałem, że może to być przydatne dla kogoś, kto po prostu chce sprawdzić, czy dany plik znajduje się w jego katalogu.

Powiązane problemy