r - 是否有 native R 语法来提取数组的行?

标签 r multidimensional-array subset tensor

想象一下,我在 R 中有一个 N 维数组(矩阵将是一个 2 维数组),我想从数组的 1 到 n 中选择行。我想知道在 R 中是否有一种语法可以在不知道维数的情况下做到这一点。
确实,我可以

x = matrix(0, nrow = 10, ncol = 2)
x[1:5, ] # to take the 5 first rows of a matrix

x = array(0, dim = c(10, 2, 3))
x[1:5, , ] # to take the 5 first rows of a 3D array
到目前为止,我还没有找到一种方法来使用这种写法来提取数组的行而不知道它的维数(显然,如果我知道维数,我只需要根据需要输入尽可能多的逗号)。以下代码段有效,但似乎不是最原生的方法:
x = array(0, dim = c(10, 2, 3, 4)
apply(x, 2:length(dim(x)), function(y) y[1:5])
有没有更多的 R 方法来实现这一目标?

最佳答案

实际上,您的应用解决方案是最好的。

apply(x, 2:length(dim(x)), `[`, 1:5)
甚至更好,正如@RuiBarradas 指出的那样(也请投票给他的评论!):
apply(x, -1, `[`, 1:5)
来自 Lisp,我可以说,R 非常 lispy。
apply解决方案是一个非常简单的解决方案。
因此它非常 R-ish(遵循函数式编程范式的解决方案)。

关于r - 是否有 native R 语法来提取数组的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66168564/

相关文章:

r - ggplot2:只使用图例中的颜色(没有符号用于绘图)

r 合并多个 lme4 对象的结果

PHP 字符串到嵌套/多维数组

java - 找出集合中总和为 n 的所有子集

python - df.drop_duplicates 删除了太多条目

r - 尝试使用用户定义的函数来填充数据框中的新列。出了什么问题?

r - 为什么 sum() 可以在此 dplyr 表达式中工作,而 quantile() 则不能?

R - 并非所有元素都返回(for 循环)

arrays - vba multiD数组到范围

c++ - C++ 中 Fortran 风格的多维数组