MyNixOS website logo
Description

Lists of Numeric Atomic Objects.

Create and manipulate numeric list ('nlist') objects. An 'nlist' is an S3 list of uniquely named numeric objects. An numeric object is an integer or double vector, matrix or array. An 'nlists' object is a S3 class list of 'nlist' objects with the same names, dimensionalities and typeofs. Numeric list objects are of interest because they are the raw data inputs for analytic engines such as 'JAGS', 'STAN' and 'TMB'. Numeric lists objects, which are useful for storing multiple realizations of of simulated data sets, can be converted to coda::mcmc and coda::mcmc.list objects.

nlist

Lifecycle:stable R-CMD-check Codecov testcoverage License:MIT CRANstatus CRAN downloads

nlist is an R package to create and manipulate numeric list (nlist) objects.

An nlist is an S3 class list of uniquely named numeric objects. An numeric object is an integer or double vector, matrix or array. nlist objects are the raw data inputs for analytic engines such as JAGS, STAN and TMB.

An nlists object is a S3 class list of nlist objects with the same names, dimensionalities and typeofs. nlists objects are useful for storing multiple realizations of simulated data sets. They can be converted to coda::mcmc and coda::mcmc.list objects.

Installation

To install the latest release from CRAN

install.packages("nlist")

To install the developmental version from GitHub

# install.packages("remotes")
remotes::install_github("poissonconsulting/nlist")

Demonstration

numeric

An numeric object is an integer or double vector, matrix or array.

library(nlist)
is.numeric(1L)
#> [1] TRUE
is.numeric(matrix(1:3))
#> [1] TRUE

nlist

An nlist is an S3 class list of uniquely named numeric objects.

It is straightforward to create an new nlist object.

library(nlist)

nlist <- nlist(x = 1, y = matrix(1:9, 3))
nlist
#> $x
#> [1] 1
#> 
#> $y
#>      [,1] [,2] [,3]
#> [1,]    1    4    7
#> [2,]    2    5    8
#> [3,]    3    6    9
#> 
#> an nlist object with 2 numeric elements

nlists

An nlists object is a S3 class list of nlist objects with the same names, dimensionalities and typeofs.

The nchains attribute is used to keep track of the number of chains.

nlists <- nlists(
  nlist(x = 1, y = matrix(1:9, 3)),
  nlist(x = -2, y = matrix(2:10, 3)),
  nlist(x = 10, y = matrix(22:30, 3)),
  nlist(x = -100, y = matrix(-2:-10, 3))
)

print(nlists)
#> $x
#> [1] -0.5
#> 
#> $y
#>      [,1] [,2] [,3]
#> [1,]  1.5  4.5  7.5
#> [2,]  2.5  5.5  8.5
#> [3,]  3.5  6.5  9.5
#> 
#> an nlists object of 4 nlist objects each with 2 numeric elements

Coercion

nlist

A data.frame can be coerced to an nlist object

data <- data.frame(
  lgl = c(TRUE, NA),
  dte = as.Date(c("2001-01-02", "2001-01-01")),
  fac = factor(c("b", "a"))
)

as_nlist(data)
#> $lgl
#> [1]  1 NA
#> 
#> $dte
#> [1] 11324 11323
#> 
#> $fac
#> [1] 2 1
#> 
#> an nlist object with 3 numeric elements

And an nlist objects can be converted to an mcmc or term_frame objects (and converted back again)

as_mcmc(nlist)
#> Markov Chain Monte Carlo (MCMC) output:
#> Start = 1 
#> End = 1 
#> Thinning interval = 1 
#>      x y[1,1] y[2,1] y[3,1] y[1,2] y[2,2] y[3,2] y[1,3] y[2,3] y[3,3]
#> [1,] 1      1      2      3      4      5      6      7      8      9
as_term_frame(nlist)
#>      term value
#> 1       x     1
#> 2  y[1,1]     1
#> 3  y[2,1]     2
#> 4  y[3,1]     3
#> 5  y[1,2]     4
#> 6  y[2,2]     5
#> 7  y[3,2]     6
#> 8  y[1,3]     7
#> 9  y[2,3]     8
#> 10 y[3,3]     9

nlists

The estimates() function can be used to aggregate an nlists object to an nlist object.

estimates(nlists, fun = mean)
#> $x
#> [1] -22.75
#> 
#> $y
#>      [,1] [,2] [,3]
#> [1,] 5.75 7.25 8.75
#> [2,] 6.25 7.75 9.25
#> [3,] 6.75 8.25 9.75
#> 
#> an nlist object with 2 numeric elements

while the tidy() function treats the values as if they are MCMC samples and summarises the terms as a tidy tibble.

tidy(nlists, simplify = TRUE)
#> # A tibble: 10 x 5
#>    term   estimate  lower upper svalue
#>    <term>    <dbl>  <dbl> <dbl>  <dbl>
#>  1 x          -0.5 -92.6   9.32  0    
#>  2 y[1,1]      1.5  -1.77 20.5   0.737
#>  3 y[2,1]      2.5  -2.62 21.5   0.737
#>  4 y[3,1]      3.5  -3.47 22.5   0.737
#>  5 y[1,2]      4.5  -4.32 23.5   0.737
#>  6 y[2,2]      5.5  -5.17 24.5   0.737
#>  7 y[3,2]      6.5  -6.02 25.5   0.737
#>  8 y[1,3]      7.5  -6.87 26.5   0.737
#>  9 y[2,3]      8.5  -7.72 27.5   0.737
#> 10 y[3,3]      9.5  -8.57 28.5   0.737

An nlists object can be converted to an mcmc.list object and a term_frame.

as_mcmc_list(nlists)
#> [[1]]
#> Markov Chain Monte Carlo (MCMC) output:
#> Start = 1 
#> End = 4 
#> Thinning interval = 1 
#>         x y[1,1] y[2,1] y[3,1] y[1,2] y[2,2] y[3,2] y[1,3] y[2,3] y[3,3]
#> [1,]    1      1      2      3      4      5      6      7      8      9
#> [2,]   -2      2      3      4      5      6      7      8      9     10
#> [3,]   10     22     23     24     25     26     27     28     29     30
#> [4,] -100     -2     -3     -4     -5     -6     -7     -8     -9    -10
#> 
#> attr(,"class")
#> [1] "mcmc.list"
as_term_frame(nlists)
#>      term sample value
#> 1       x      1     1
#> 2  y[1,1]      1     1
#> 3  y[2,1]      1     2
#> 4  y[3,1]      1     3
#> 5  y[1,2]      1     4
#> 6  y[2,2]      1     5
#> 7  y[3,2]      1     6
#> 8  y[1,3]      1     7
#> 9  y[2,3]      1     8
#> 10 y[3,3]      1     9
#> 11      x      2    -2
#> 12 y[1,1]      2     2
#> 13 y[2,1]      2     3
#> 14 y[3,1]      2     4
#> 15 y[1,2]      2     5
#> 16 y[2,2]      2     6
#> 17 y[3,2]      2     7
#> 18 y[1,3]      2     8
#> 19 y[2,3]      2     9
#> 20 y[3,3]      2    10
#> 21      x      3    10
#> 22 y[1,1]      3    22
#> 23 y[2,1]      3    23
#> 24 y[3,1]      3    24
#> 25 y[1,2]      3    25
#> 26 y[2,2]      3    26
#> 27 y[3,2]      3    27
#> 28 y[1,3]      3    28
#> 29 y[2,3]      3    29
#> 30 y[3,3]      3    30
#> 31      x      4  -100
#> 32 y[1,1]      4    -2
#> 33 y[2,1]      4    -3
#> 34 y[3,1]      4    -4
#> 35 y[1,2]      4    -5
#> 36 y[2,2]      4    -6
#> 37 y[3,2]      4    -7
#> 38 y[1,3]      4    -8
#> 39 y[2,3]      4    -9
#> 40 y[3,3]      4   -10

An nlists object can have its chains split or collapsed.

split_chains(nlists)
#> $x
#> [1] -0.5
#> 
#> $y
#>      [,1] [,2] [,3]
#> [1,]  1.5  4.5  7.5
#> [2,]  2.5  5.5  8.5
#> [3,]  3.5  6.5  9.5
#> 
#> an nlists object with 2 chains of 2 nlist objects each with 2 numeric elements

Contribution

Please report any issues.

Pull requests are always welcome.

Code of Conduct

Please note that the nlist project is released with a Contributor Code of Conduct. By contributing to this project, you agree to abide by its terms.

Metadata

Version

0.3.3

License

Unknown

Platforms (75)

    Darwin
    FreeBSD
    Genode
    GHCJS
    Linux
    MMIXware
    NetBSD
    none
    OpenBSD
    Redox
    Solaris
    WASI
    Windows
Show all
  • aarch64-darwin
  • aarch64-genode
  • aarch64-linux
  • aarch64-netbsd
  • aarch64-none
  • aarch64_be-none
  • arm-none
  • armv5tel-linux
  • armv6l-linux
  • armv6l-netbsd
  • armv6l-none
  • armv7a-darwin
  • armv7a-linux
  • armv7a-netbsd
  • armv7l-linux
  • armv7l-netbsd
  • avr-none
  • i686-cygwin
  • i686-darwin
  • i686-freebsd
  • i686-genode
  • i686-linux
  • i686-netbsd
  • i686-none
  • i686-openbsd
  • i686-windows
  • javascript-ghcjs
  • loongarch64-linux
  • m68k-linux
  • m68k-netbsd
  • m68k-none
  • microblaze-linux
  • microblaze-none
  • microblazeel-linux
  • microblazeel-none
  • mips-linux
  • mips-none
  • mips64-linux
  • mips64-none
  • mips64el-linux
  • mipsel-linux
  • mipsel-netbsd
  • mmix-mmixware
  • msp430-none
  • or1k-none
  • powerpc-netbsd
  • powerpc-none
  • powerpc64-linux
  • powerpc64le-linux
  • powerpcle-none
  • riscv32-linux
  • riscv32-netbsd
  • riscv32-none
  • riscv64-linux
  • riscv64-netbsd
  • riscv64-none
  • rx-none
  • s390-linux
  • s390-none
  • s390x-linux
  • s390x-none
  • vc4-none
  • wasm32-wasi
  • wasm64-wasi
  • x86_64-cygwin
  • x86_64-darwin
  • x86_64-freebsd
  • x86_64-genode
  • x86_64-linux
  • x86_64-netbsd
  • x86_64-none
  • x86_64-openbsd
  • x86_64-redox
  • x86_64-solaris
  • x86_64-windows