Skip to contents

Download a file

Usage

ckan_fetch(
  x,
  store = "session",
  path = "file",
  format = NULL,
  key = get_default_key(),
  ...
)

Arguments

x

URL of the file

store

One of session (default) or disk. The session option stores the file in the R session, and the disk option saves the file to disk.

path

If store="disk", give a path to store the file.

format

Format of the file. If the file URL does not show the format, pass format.

key

A CKAN API key (optional, character)

...

Extra arguments. If store="session", the function passes them to the function that reads the file. See details.

Details

You can pass additional arguments with ... to the function that reads the file. The function uses ... only when store="session" and the file is not a ZIP file.

This list shows the function that reads each file format. You can see what additional arguments are available:

Examples

if (FALSE) { # \dontrun{
# CSV file
ckanr_setup("http://datamx.io")
res <- resource_show(
  id = "6145a539-cbde-4b0d-a3d3-d1a5eb013f5c",
  as = "table"
)
head(ckan_fetch(res$url))
ckan_fetch(res$url, "disk", "myfile.csv")

# CSV file, format not available
ckanr_setup("https://ckan0.cf.opendata.inter.prod-toronto.ca")
res <- resource_show(
  id = "c57c3e1c-20e2-470f-bc82-e39a0264be31",
  as = "table"
)
res$url
res$format
head(ckan_fetch(res$url, format = res$format))

# Excel file - requires readxl package
ckanr_setup("http://datamx.io")
res <- resource_show(
  id = "e883510e-a082-435c-872a-c5b915857ae1",
  as = "table"
)
head(ckan_fetch(res$url))

# Excel file, multiple sheets - requires readxl package
ckanr_setup()
res <- resource_show(
  id = "ce02a1cf-35f1-41df-91d9-11ed1fdd4186",
  as = "table"
)
x <- ckan_fetch(res$url)
names(x)
head(x[["Mayor - Maire"]])

# XML file - requires xml2 package
# ckanr_setup("http://data.ottawa.ca")
# res <- resource_show(id = "380061c1-6c46-4da6-a01b-7ab0f49a881e",
# as = "table")
# ckan_fetch(res$url)

# HTML file - requires xml2 package
ckanr_setup("http://open.canada.ca/data/en")
res <- resource_show(
  id = "80321bac-4283-487c-93bd-c65acaa660f5",
  as = "table"
)
ckan_fetch(res$url)
library("xml2")
xml_text(xml_find_first(xml_children(ckan_fetch(res$url))[[1]], "title"))

# JSON file, by default reads in to a data.frame for ease of use
ckanr_setup("http://data.surrey.ca")
res <- resource_show(
  id = "8d07c662-800d-4977-9e3e-5a3d2d1e99ab",
  as = "table"
)
head(ckan_fetch(res$url))

# SHP file (spatial data, ESRI format) - requires sf package
ckanr_setup("https://ckan0.cf.opendata.inter.prod-toronto.ca")
res <- resource_show(
  id = "27362290-8bbf-434b-a9de-325a6c2ef923",
  as = "table"
)
x <- ckan_fetch(res$url)
class(x)
plot(x[, c("AREA_NAME", "geometry")])

# GeoJSON file - requires sf package
ckanr_setup("http://datamx.io")
res <- resource_show(
  id = "b1cd35b7-479e-4fa0-86e9-e897d3c617e6",
  as = "table"
)
x <- ckan_fetch(res$url)
class(x)
plot(x[, c("mun_name", "geometry")])

# ZIP file - packages required depends on contents
ckanr_setup("https://ckan0.cf.opendata.inter.prod-toronto.ca")
res <- resource_show(
  id = "bb21e1b8-a466-41c6-8bc3-3c362cb1ed55",
  as = "table"
)
x <- ckan_fetch(res$url)
names(x)
head(x[["ChickenpoxAgegroups2017.csv"]])

# TXT file
ckanr_setup("https://ckan0.cf.opendata.inter.prod-toronto.ca")
res <- resource_show(
  id = "e4211f49-611f-438c-a444-aaa7f3f84117",
  as = "table"
)
x <- ckan_fetch(res$url)
head(x)

# TXT file, semicolon used as separator
ckanr_setup("https://data.coat.no")
res <- resource_show(
  id = "384fe537-e0bd-4e57-8a0d-420b7a745196",
  as = "table"
)
x <- ckan_fetch(res$url, sep = ";")
head(x)

# Parquet file - requires arrow package
ckanr_setup("https://data.coat.no")
res <- resource_show(
  id = "b7d1c192-0f44-4bab-bd51-eea0d408a09f",
  as = "table"
)
x <- ckan_fetch(res$url)
head(x)
} # }