Reputation: 4151
I've created a R markdown file that starts by loading a file from the web. I found the cache=TRUE to be a little flaky so I want to put an if condition in to check for the downloaded file before downloading it.
Current Code - Always downloads 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")
Desired Code - only upload if if not already downloaded
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)
What syntax will give me the condition "destFile doesNotExist"
Upvotes: 76
Views: 98922
Reputation: 340
An easy way to check the existence of a file in your working directory is: which(list.files() == "nameoffile.csv")
This doesn't exactly answer his question but I thought this might be helpful to someone who simply wants to check if a particular file is there in their directory.
Upvotes: 12
Reputation: 4151
As per the answer given by @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)
Upvotes: 26
Reputation: 121568
You can use 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")
}
Upvotes: 82