Factory method to instantiate Table class. This method is async and it should be used with value keyword from future package. If references argument is provided foreign keys will be checked on any reading operation.

Table.load(source, schema = NULL, strict = FALSE, headers = 1, ...)

Arguments

source

data source, one of:

  • string with the path of the local CSV file

  • string with the url of the remote CSV file

  • list of lists representing the rows

  • readable stream with CSV file contents

  • function returning readable stream with CSV file contents

schema

data schema in all forms supported by Schema class

strict

strictness option TRUE or FALSE, to pass to Schema constructor

headers

data source headers, one of:

  • row number containing headers (source should contain headers rows)

  • list of headers (source should NOT contain headers rows)

...

options to be used by CSV parser. All options listed at https://csv.js.org/parse/options/. By default ltrim is TRUE according to the CSV Dialect spec.

Details

Jsolite package is internally used to convert json data to list objects. The input parameters of functions could be json strings, files or lists and the outputs are in list format to easily further process your data in R environment and exported as desired. Examples section show how to use jsonlite package and tableschema.r together. More details about handling json you can see jsonlite documentation or vignettes here.

Future package is also used to load and create Table and Schema classes asynchronously. To retrieve the actual result of the loaded Table or Schema you have to use value function to the variable you stored the loaded Table/Schema. More details about future package and sequential and parallel processing you can find here.

Term array refers to json arrays which if converted in R will be list objects.

See also

Examples

# define source SOURCE = '[ ["id", "height", "age", "name", "occupation"], [1, "10.0", 1, "string1", "2012-06-15 00:00:00"], [2, "10.1", 2, "string2", "2013-06-15 01:00:00"], [3, "10.2", 3, "string3", "2014-06-15 02:00:00"], [4, "10.3", 4, "string4", "2015-06-15 03:00:00"], [5, "10.4", 5, "string5", "2016-06-15 04:00:00"] ]' # define schema SCHEMA = '{ "fields": [ {"name": "id", "type": "integer", "constraints": {"required": true}}, {"name": "height", "type": "number"}, {"name": "age", "type": "integer"}, {"name": "name", "type": "string", "constraints": {"unique": true}}, {"name": "occupation", "type": "datetime", "format": "any"} ], "primaryKey": "id" }' def = Table.load(jsonlite::fromJSON(SOURCE, simplifyVector = FALSE), schema = SCHEMA) table = future::value(def) # work with list source rows = table$read() # read source data and limit rows rows2 = table$read(limit = 1) # read source data and return keyed rows rows3 = table$read(limit = 1, keyed = TRUE) # read source data and return extended rows rows4 = table$read(limit = 1, extended = TRUE) # work with Schema instance def1 = Schema.load(SCHEMA) schema = future::value(def1) def2 = Table.load(jsonlite::fromJSON(SOURCE, simplifyVector = FALSE), schema = schema) table2 = future::value(def2) rows5 = table2$read()