[R] Is simplify2array working for dimension > 2?

Jean-Claude Arbaut @rb@utjc @end|ng |rom gm@||@com
Thu Feb 8 02:18:11 CET 2024


Reading the doc for ?simplify2array, I got the impression that with the
'higher = T' argument the function returns an array of dimension greater
than 2 when it makes sense (the doc says "when appropriate", which is
rather vague). I would expect

a <- list(
  list(list(1, 2), list(3, 4)),
  list(list(5, 6), list(7, 8))
)
simplify2array(a, higher = T)

to return the same (possibly up to a dimension permutation) as
array(1:8, dim = c(2, 2, 2))

However, in this case simplify2array returns a matrix (i.e. 2 dimensional
array), whose elements are lists.
It's the same as
structure(list(list(1, 2), list(3, 4), list(5, 6), list(7, 8)), dim = c(2,
2))

I get the same behavior with
a <- list(
  list(c(1, 2), c(3, 4)),
  list(c(5, 6), c(7, 8))
)
but then the matrix elements are numeric vectors instead of lists.

Did I miss something to get the result I expected with this function? Or is
it a bug? Or maybe the function is not supposed to return a higher
dimensional array, and I didn't understand the documentation correctly?

There is a workaround, one can do for instance
array(unlist(a), dim = c(2, 2, 2))
and there may be better options (checking dimensions?).

In case it's important: running R 4.3.2 on Debian 12.4.

Best regards,

Jean-Claude Arbaut

	[[alternative HTML version deleted]]



More information about the R-help mailing list