Arrange a given random vector into a matrix or array form.

rvmatrix(data = NA, nrow = 1, ncol = 1, byrow = FALSE, dimnames = NULL)

rvarray(data = NA, dim = length(data), dimnames = NULL)

Arguments

data

an optional data vector.

nrow

the desired number of rows.

ncol

the desired number of columns.

byrow

logical. If FALSE (the default) the matrix is filled by columns, otherwise the matrix is filled by rows.

dimnames

A dimnames attribute for the matrix: a list of length 2 giving the row and column names respectively.

dim

the dim attribute for the array to be created, that is a vector of length one or more giving the maximal indices in each dimension.

Details

These are 'rv' compatible versions of the functions matrix and array.

The function rvmatrix generates the random variable matrix via an rvarray call.

The rvarray function calls first array to set the dimensions of the argument data and then coerces the resulting array object to an 'rv' object.

References

Kerman, J. and Gelman, A. (2007). Manipulating and Summarizing Posterior Simulations Using Random Variable Objects. Statistics and Computing 17:3, 235-244.

See also vignette("rv").

See also

To plot random matrices, see mlplot.

Author

Jouni Kerman jouni@kerman.com

Examples


  n.rows <- 3; n.cols <- 4; n <- (n.rows*n.cols)
  mu.true <- rnorm(1:n.rows, mean=1:n.rows, sd=1)
  theta <- rvmatrix(rvnorm(n=n.cols, mean=mu.true, sd=0.5), nrow=n.rows)
  col.labels <- paste("Time", 1:n.cols, sep=":")
  row.labels <- paste("Unit", 1:n.rows, sep=":")
  dimnames(theta) <- list(row.labels, col.labels)
  print(theta)
#>          row    col   mean   sd     1%   2.5%  25%  50%  75% 97.5% 99% sims
#> [1,1] Unit:1 Time:1 : 1.00 0.48 -0.101  0.063 0.66 0.98 1.31   1.9 2.1  200
#> [2,1] Unit:2 Time:1 : 0.67 0.50 -0.393 -0.340 0.31 0.64 0.99   1.7 1.9  200
#> [3,1] Unit:3 Time:1 : 4.20 0.54  2.981  3.093 3.85 4.22 4.58   5.2 5.3  200
#> [1,2] Unit:1 Time:2 : 0.95 0.52 -0.180 -0.079 0.63 0.99 1.30   1.8 1.9  200
#> [2,2] Unit:2 Time:2 : 0.68 0.51 -0.554 -0.426 0.39 0.66 1.02   1.5 1.6  200
#> [3,2] Unit:3 Time:2 : 4.19 0.50  3.082  3.204 3.85 4.20 4.51   5.2 5.3  200
#> [1,3] Unit:1 Time:3 : 0.98 0.49  0.016  0.132 0.60 1.03 1.30   1.9 2.0  200
#> [2,3] Unit:2 Time:3 : 0.73 0.49 -0.364 -0.314 0.43 0.78 1.07   1.6 1.7  200
#> [3,3] Unit:3 Time:3 : 4.10 0.49  3.098  3.278 3.78 4.10 4.47   5.0 5.1  200
#> [1,4] Unit:1 Time:4 : 1.01 0.53 -0.057  0.148 0.61 1.03 1.37   2.0 2.3  200
#> [2,4] Unit:2 Time:4 : 0.64 0.50 -0.322 -0.270 0.27 0.65 0.99   1.6 1.7  200
#> [3,4] Unit:3 Time:4 : 4.14 0.48  3.032  3.137 3.82 4.18 4.42   5.0 5.2  200
  print(E(theta))  
#>           Time:1    Time:2    Time:3    Time:4
#> Unit:1 0.9953021 0.9466902 0.9786610 1.0136122
#> Unit:2 0.6703186 0.6807653 0.7329507 0.6438023
#> Unit:3 4.2039574 4.1868029 4.1006313 4.1358105