if(!is_on_cran()){
# Create a tensor
ts <- Tensor$new(
data = 1:18000000, c(3000,300,20),
dimnames = list(A = 1:3000, B = 1:300, C = 1:20),
varnames = c('A', 'B', 'C'))
# Size of tensor when in memory is usually large
# `lobstr::obj_size(ts)` -> 8.02 MB
# Enable hybrid mode
ts$to_swap_now()
# Hybrid mode, usually less than 1 MB
# `lobstr::obj_size(ts)` -> 814 kB
# Subset data
start1 <- Sys.time()
subset(ts, C ~ C < 10 & C > 5, A ~ A < 10)
#> Dimension: 9 x 300 x 4
#> - A: 1, 2, 3, 4, 5, 6,...
#> - B: 1, 2, 3, 4, 5, 6,...
#> - C: 6, 7, 8, 9
end1 <- Sys.time(); end1 - start1
#> Time difference of 0.188035 secs
# Join tensors
ts <- lapply(1:20, function(ii){
Tensor$new(
data = 1:9000, c(30,300,1),
dimnames = list(A = 1:30, B = 1:300, C = ii),
varnames = c('A', 'B', 'C'), use_index = 2)
})
ts <- join_tensors(ts, temporary = TRUE)
}
Run the code above in your browser using DataLab