Converts R objects to ndjson
Usage
to_ndjson(
x,
unbox = FALSE,
digits = NULL,
numeric_dates = TRUE,
factors_as_string = TRUE,
by = "row"
)Arguments
- x
object to convert to JSON
- unbox
logical indicating if single-value arrays should be 'unboxed', that is, not contained inside an array.
- digits
integer specifying the number of decimal places to round numerics. Default is
NULL- no rounding- numeric_dates
logical indicating if dates should be treated as numerics. Defaults to TRUE for speed. If FALSE, the dates will be coerced to character in UTC time zone
- factors_as_string
logical indicating if factors should be treated as strings. Defaults to TRUE.
- by
either "row" or "column" indicating if data.frames and matrices should be processed row-wise or column-wise. Defaults to "row"
Details
Lists are converted to ndjson non-recursively. That is, each of the objects in the list at the top level are converted to a new-line JSON object. Any nested sub-elements are then contained within that JSON object. See examples
Examples
to_ndjson( 1:5 )
#> [1,2,3,4,5]
to_ndjson( letters )
#> ["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"]
mat <- matrix(1:6, ncol = 2)
to_ndjson( x = mat )
#> [1,4]
#> [2,5]
#> [3,6]
to_ndjson( x = mat, by = "col" )
#> [1,2,3]
#> [4,5,6]
df <- data.frame(
x = 1:5
, y = letters[1:5]
, z = as.Date(seq(18262, 18262 + 4, by = 1 ), origin = "1970-01-01" )
)
to_ndjson( x = df )
#> {"x":1,"y":"a","z":18262.0}
#> {"x":2,"y":"b","z":18263.0}
#> {"x":3,"y":"c","z":18264.0}
#> {"x":4,"y":"d","z":18265.0}
#> {"x":5,"y":"e","z":18266.0}
to_ndjson( x = df, numeric_dates = FALSE )
#> {"x":1,"y":"a","z":"2020-01-01"}
#> {"x":2,"y":"b","z":"2020-01-02"}
#> {"x":3,"y":"c","z":"2020-01-03"}
#> {"x":4,"y":"d","z":"2020-01-04"}
#> {"x":5,"y":"e","z":"2020-01-05"}
to_ndjson( x = df, factors_as_string = FALSE )
#> {"x":1,"y":"a","z":18262.0}
#> {"x":2,"y":"b","z":18263.0}
#> {"x":3,"y":"c","z":18264.0}
#> {"x":4,"y":"d","z":18265.0}
#> {"x":5,"y":"e","z":18266.0}
to_ndjson( x = df, by = "column" )
#> {"x":[1,2,3,4,5]}
#> {"y":["a","b","c","d","e"]}
#> {"z":[18262.0,18263.0,18264.0,18265.0,18266.0]}
to_ndjson( x = df, by = "column", numeric_dates = FALSE )
#> {"x":[1,2,3,4,5]}
#> {"y":["a","b","c","d","e"]}
#> {"z":["2020-01-01","2020-01-02","2020-01-03","2020-01-04","2020-01-05"]}
## Lists are non-recurisve; only elements `x` and `y` are converted to ndjson
lst <- list(
x = 1:5
, y = list(
a = letters[1:5]
, b = data.frame(i = 10:15, j = 20:25)
)
)
to_ndjson( x = lst )
#> {"x":[1,2,3,4,5]}
#> {"y":{"a":["a","b","c","d","e"],"b":[{"i":10,"j":20},{"i":11,"j":21},{"i":12,"j":22},{"i":13,"j":23},{"i":14,"j":24},{"i":15,"j":25}]}}
to_ndjson( x = lst, by = "column")
#> {"x":[1,2,3,4,5]}
#> {"y":{"a":["a","b","c","d","e"],"b":{"i":[10,11,12,13,14,15],"j":[20,21,22,23,24,25]}}}