Provides five types of map that fit in different use cases.
1 2 3 4 5
directory path where map data should be stored
There are five types of map implemented. They all inherit class
AbstractMap. There are several differences in
use case scenarios and they backend implementations.
A session map takes a
fastmap object. All objects are
stored in current R session. This means you cannot access the map from other
process nor parent process. The goal of this map is to share the data across
different environments and to store global variables, as long as they share
the same map object. If you are looking for maps that can be shared
by different processes, check the rest map types. The closest map type is
An 'RDS' map uses file system to store values. The values are stored
separately in '.rds' files. Compared to session maps, 'RDS' map can be
shared across different R process. It's recommended to store
large files in
rds_map. If the value is not large in RAM,
text_map is recommended.
A 'text' map uses file system to store values. Similar to
it can be stored across multiple processes as long as the maps share the
same file directory. However, unlike
text_map can only store basic data values, namely atom data types.
The supported types are: numeric, character, vector, list, matrix
It's highly recommended to convert factors to characters. Do NOT use if the
values are functions or environments. The recommended use case scenario
is when the speed is not the major concern, and you want to preserve data
with backward compatibility. Otherwise it's highly recommended to use
R6 instance that inherits
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
# ----------------------Basic Usage ---------------------- # Define a path to your map. path = tempfile() map <- rds_map(path) # Reset map$reset() # Check if the map is corrupted. map$validate() # You have not set any key-value pairs yet. # Let's say two parallel processes (A and B) are sharing this map. # Process A set values map$keys() # Start push # set a normal message map$set(key = 'a', value = 1) # set a large object map$set(key = 'b', value = rnorm(100000)) # set an object with hash of another object map$set(key = 'c', value = 2, signature = list( parameter1 = 123, parameter2 = 124 )) # Check what's in the map from process B mapB <- rds_map(path) mapB$keys() mapB$keys(include_signatures = TRUE) # Number of key-values pairs in the map. mapB$size() # Check if key exists mapB$has(c('1','a', 'c')) # Check if key exists and signature also matches mapB$has('c', signature = list( parameter1 = 123, parameter2 = 124 )) # Signature changed, then return FALSE. This is especially useful when # value is really large and reading the value takes tons of time mapB$has('c', signature = list( parameter1 = 1244444, parameter2 = 124 )) # Destroy the map's files altogether. mapB$destroy() ## Not run: # Once destroyed, validate will raise error mapB$validate() ## End(Not run)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.