Extract the raw array data as a list of one or more arrays. This can be the
entire variable/s or after dimension-slicing using hyper_filter()
expressions. This is a delay-breaking function and causes data to be read
from the source into R native arrays. This list of arrays is
lightly classed as tidync_data, with methods for print() and tidync().
Usage
hyper_array(
x,
select_var = NULL,
...,
raw_datavals = FALSE,
force = FALSE,
drop = TRUE
)
hyper_slice(
x,
select_var = NULL,
...,
raw_datavals = FALSE,
force = FALSE,
drop = TRUE
)
# S3 method for class 'tidync'
hyper_array(
x,
select_var = NULL,
...,
raw_datavals = FALSE,
force = FALSE,
drop = TRUE
)
# S3 method for class 'character'
hyper_array(
x,
select_var = NULL,
...,
raw_datavals = FALSE,
force = FALSE,
drop = TRUE
)Arguments
- x
NetCDF file, connection object, or tidync object
- select_var
optional vector of variable names to select
- ...
passed to
hyper_filter()- raw_datavals
logical to control whether scaling in the NetCDF is applied or not
- force
ignore caveats about large extraction and just do it
- drop
collapse degenerate dimensions, defaults to
TRUE
Details
The function hyper_array() is used by hyper_tibble() and hyper_tbl_cube()
to actually extract data arrays from NetCDF, if a result would be particularly large
there is a check made and user-opportunity to cancel. This is controllable as an
option getOption('tidync.large.data.check'), and can be set to never check with
options(tidync.large.data.check = FALSE).
The function hyper_array() will act on an existing tidync object or a source
string.
By default all variables in the active grid are returned, use select_var to
specify one or more desired variables.
The transforms are stored as a list of tables in an attribute transforms,
access these with hyper_transforms().
See also
print.tidync_data for a description of the print summary,
hyper_tbl_cube() and hyper_tibble() which are also delay-breaking
functions that cause data to be read
Examples
f <- "S20080012008031.L3m_MO_CHL_chlor_a_9km.nc"
l3file <- system.file("extdata/oceandata", f, package= "tidync")
## extract a raw list by filtered dimension
library(dplyr)
#>
#> Attaching package: ‘dplyr’
#> The following objects are masked from ‘package:stats’:
#>
#> filter, lag
#> The following objects are masked from ‘package:base’:
#>
#> intersect, setdiff, setequal, union
araw1 <- tidync(l3file) %>%
hyper_filter(lat = between(lat, -78, -75.8),
lon = between(lon, 165, 171)) %>%
hyper_array()
araw <- tidync(l3file) %>%
hyper_filter(lat = abs(lat) < 10,
lon = index < 100) %>%
hyper_array()
## hyper_array will pass the expressions to hyper_filter
braw <- tidync(l3file) %>%
hyper_array(lat = abs(lat) < 10, lon = index < 100)
## get the transforms tables (the axis coordinates)
lapply(attr(braw, "transforms"),
function(x) nrow(dplyr::filter(x, selected)))
#> $lon
#> [1] 99
#>
#> $lat
#> [1] 240
#>
## the selected axis coordinates should match in order and in size
lapply(braw, dim)
#> $chlor_a
#> [1] 99 240
#>
