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. An integer vector describing the dimensions of the rray. If NULL, the dimensions are taken from the existing object using rray_dim(). 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.

An rray.

## Details

The dim argument is very flexible.

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

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
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