Is there a native R syntax to extract rows of an array?

Your apply solution is the best, actually.

apply(x, 2:length(dim(x)), `[`, 1:5)

or even better as @RuiBarradas pointed out (please vote his comment too!):

apply(x, -1, `[`, 1:5)

Coming from Lisp, I can say, that R is very lispy. And the apply solution is a very lispy solution. And therefore it is very R-ish (a solution following the functional programming paradigm).


Function slice.index() is easily overlooked (as I know to my cost! see magic::arow()) but can be useful in this case:

x <- array(runif(60), dim = c(10, 2, 3))
array(x[slice.index(x,1) %in% 1:5],c(5,dim(x)[-1]))

HTH, Robin