rush run -n 'head(df)' config.yaml
#> #!/usr/bin/env -S ir run
#> #| packages:
#> #| - rush
#>
#> rush::init(
#> dpi = 300L
#> )
#>
#> dfs <- list()
#> dfs[["config"]] <- rush::read("config.yaml")
#> df <- dfs[[1]]
#> result <- head(df)
#>
#> rush::write(result)Structured data (YAML, TOML, XML, RDS, FWF)
YAML
Files ending in .yaml or .yml are read with yaml. Nested structures are preserved when the output format supports nesting (JSON, YAML, TOML, XML, RDS); otherwise they are flattened.
Reading
Writing
rush run -n -O yaml -o output.yaml 'df' data.csv
#> #!/usr/bin/env -S ir run
#> #| packages:
#> #| - rush
#>
#> rush::init(
#> output = "output.yaml",
#> output_format = "yaml",
#> dpi = 300L
#> )
#>
#> dfs <- list()
#> dfs[["data"]] <- rush::read("data.csv")
#> df <- dfs[[1]]
#> result <- df
#>
#> rush::write(result)Converting (nesting preserved)
rush convert -n -o output.yaml data.json
#> #!/usr/bin/env -S ir run
#> #| packages:
#> #| - rush
#>
#> rush::init(
#> output = "output.yaml",
#> output_format = "yaml",
#> dpi = 300L
#> )
#>
#> dfs <- list()
#> dfs[["data"]] <- rush::read("data.json")
#> df <- dfs[[1]]
#> result <- df
#>
#> rush::write(result)TOML
Files ending in .toml are read with RcppTOML:
Reading
rush run -n 'head(df)' config.toml
#> #!/usr/bin/env -S ir run
#> #| packages:
#> #| - rush
#>
#> rush::init(
#> dpi = 300L
#> )
#>
#> dfs <- list()
#> dfs[["config"]] <- rush::read("config.toml")
#> df <- dfs[[1]]
#> result <- head(df)
#>
#> rush::write(result)Writing
rush run -n -O toml -o output.toml 'df' data.csv
#> #!/usr/bin/env -S ir run
#> #| packages:
#> #| - rush
#>
#> rush::init(
#> output = "output.toml",
#> output_format = "toml",
#> dpi = 300L
#> )
#>
#> dfs <- list()
#> dfs[["data"]] <- rush::read("data.csv")
#> df <- dfs[[1]]
#> result <- df
#>
#> rush::write(result)XML
Files ending in .xml are read with xml2. Data frames are serialized as rows, with configurable element names.
Reading
rush run -n 'head(df)' data.xml
#> #!/usr/bin/env -S ir run
#> #| packages:
#> #| - rush
#>
#> rush::init(
#> dpi = 300L
#> )
#>
#> dfs <- list()
#> dfs[["data"]] <- rush::read("data.xml")
#> df <- dfs[[1]]
#> result <- head(df)
#>
#> rush::write(result)Writing
rush run -n -O xml -o output.xml 'df' data.csv
#> #!/usr/bin/env -S ir run
#> #| packages:
#> #| - rush
#>
#> rush::init(
#> output = "output.xml",
#> output_format = "xml",
#> dpi = 300L
#> )
#>
#> dfs <- list()
#> dfs[["data"]] <- rush::read("data.csv")
#> df <- dfs[[1]]
#> result <- df
#>
#> rush::write(result)--output-root and --output-record
Customize the root and record element names (defaults: root and record):
rush run -n -O xml --output-root plants --output-record observation 'head(df)' data.csv
#> #!/usr/bin/env -S ir run
#> #| packages:
#> #| - rush
#>
#> rush::init(
#> output_format = "xml",
#> dpi = 300L,
#> output_root = "plants",
#> output_record = "observation"
#> )
#>
#> dfs <- list()
#> dfs[["data"]] <- rush::read("data.csv")
#> df <- dfs[[1]]
#> result <- head(df)
#>
#> rush::write(result)RDS
R’s native serialisation format. Files ending in .rds are read with readr::read_rds() and written with readr::write_rds():
Reading
rush run -n 'head(df)' data.rds
#> #!/usr/bin/env -S ir run
#> #| packages:
#> #| - rush
#>
#> rush::init(
#> dpi = 300L
#> )
#>
#> dfs <- list()
#> dfs[["data"]] <- rush::read("data.rds")
#> df <- dfs[[1]]
#> result <- head(df)
#>
#> rush::write(result)Writing
rush run -n -o output.rds 'df' data.csv
#> #!/usr/bin/env -S ir run
#> #| packages:
#> #| - rush
#>
#> rush::init(
#> output = "output.rds",
#> output_format = "rds",
#> dpi = 300L
#> )
#>
#> dfs <- list()
#> dfs[["data"]] <- rush::read("data.csv")
#> df <- dfs[[1]]
#> result <- df
#>
#> rush::write(result)Fixed-width files (FWF)
Files ending in .fwf are read with readr::read_fwf(). Column positions are auto-detected. This format is read-only.
Reading
rush run -n 'head(df)' data.fwf
#> #!/usr/bin/env -S ir run
#> #| packages:
#> #| - rush
#>
#> rush::init(
#> dpi = 300L
#> )
#>
#> dfs <- list()
#> dfs[["data"]] <- rush::read("data.fwf")
#> df <- dfs[[1]]
#> result <- head(df)
#>
#> rush::write(result)Using -F fwf for files without the .fwf extension
rush run -n -F fwf 'head(df)' legacy.txt
#> #!/usr/bin/env -S ir run
#> #| packages:
#> #| - rush
#>
#> rush::init(
#> dpi = 300L
#> )
#>
#> dfs <- list()
#> dfs[["legacy"]] <- rush::read("legacy.txt", format = "fwf")
#> df <- dfs[[1]]
#> result <- head(df)
#>
#> rush::write(result)