Constructor for building rray objects. Existing vectors, matrices, and arrays can be used to build the rray, but their dimension names are not retained.

rray(x = numeric(0), dim = NULL, dim_names = NULL)

Arguments

x

A numeric vector, matrix, or array to convert to an rray.

dim

An integer vector describing the dimensions of the rray. If NULL, the dimensions are taken from the existing object using rray_dim().

dim_names

A list. For no names, NULL, in which case a list of empty characters will be constructed. Otherwise the list must be the same length as the total number of dimensions (i.e length(c(size, shape))). Each element of the list much be either a character vector the same size as the corresponding dimension, or character(0) for no names for that dimension.

Value

An rray.

Details

The dim argument is very flexible.

  • If vec_size(x) == prod(dim), then a reshape is performed.

  • Otherwise broadcasting is attempted.

This allows quick construction of a wide variety of structures. See the example section for more.

rray objects are never reduced to vectors when subsetting using [ (i.e. dimensions are never dropped).

Examples

# 1D rray. Looks like a vector # functions similar to a 1 column matrix rray(c(1,2,3), dim = c(3))
#> <rray<dbl>[3]> #> [1] 1 2 3
# 3 rows, 4 cols rray(c(1,2,3), dim = c(3, 4))
#> <rray<dbl>[,4][3]> #> [,1] [,2] [,3] [,4] #> [1,] 1 1 1 1 #> [2,] 2 2 2 2 #> [3,] 3 3 3 3
# 3x2x4 array rray(1, dim = c(3, 2, 4))
#> <rray<dbl>[,2,4][3]> #> , , 1 #> #> [,1] [,2] #> [1,] 1 1 #> [2,] 1 1 #> [3,] 1 1 #> #> , , 2 #> #> [,1] [,2] #> [1,] 1 1 #> [2,] 1 1 #> [3,] 1 1 #> #> , , 3 #> #> [,1] [,2] #> [1,] 1 1 #> [2,] 1 1 #> [3,] 1 1 #> #> , , 4 #> #> [,1] [,2] #> [1,] 1 1 #> [2,] 1 1 #> [3,] 1 1 #>
# from a matrix mat <- matrix(c(1, 2, 3, 4), ncol = 2) rray(mat)
#> <rray<dbl>[,2][2]> #> [,1] [,2] #> [1,] 1 3 #> [2,] 2 4
# from a matrix, with broadcasting rray(mat, dim = c(2, 2, 3))
#> <rray<dbl>[,2,3][2]> #> , , 1 #> #> [,1] [,2] #> [1,] 1 3 #> [2,] 2 4 #> #> , , 2 #> #> [,1] [,2] #> [1,] 1 3 #> [2,] 2 4 #> #> , , 3 #> #> [,1] [,2] #> [1,] 1 3 #> [2,] 2 4 #>
# reshape that matrix during creation # (different from broadcasting) rray(mat, dim = c(1, 4))
#> <rray<dbl>[,4][1]> #> [,1] [,2] [,3] [,4] #> [1,] 1 2 3 4
# from an array, with broadcasting arr <- array(1, c(1, 2, 2)) rray(arr, c(3, 2, 2))
#> <rray<dbl>[,2,2][3]> #> , , 1 #> #> [,1] [,2] #> [1,] 1 1 #> [2,] 1 1 #> [3,] 1 1 #> #> , , 2 #> #> [,1] [,2] #> [1,] 1 1 #> [2,] 1 1 #> [3,] 1 1 #>
# with row names rray(c(1, 2, 3), c(3, 2), dim_names = list(c("x", "y", "z"), NULL))
#> <rray<dbl>[,2][3]> #> [,1] [,2] #> x 1 1 #> y 2 2 #> z 3 3