R:相当于Numpy的“dot dot dot”运算符用于切片

时间:2017-11-19 12:33:18

标签: arrays r numpy

在Python中,如果a是Numpy数组,我可以这样做:

a[..., 0]

要获取最后一个维度的第一个元素,无论shape的{​​{1}}。

示例:

a

未找到基础R here中的等效词。

有没有办法在(base)R中对任何数组执行此操作?在接收任何nD数组的泛型函数中真的很有帮助。

1 个答案:

答案 0 :(得分:1)

我们可以写自己的。这里a必须是一个数组或一个对象,使得as.array(obj)是一个数组,i是最后一个维度的可选索引,默认为1。

last <- function(a, i = 1) {
  a <- as.array(a)
  ix <- lapply(dim(a), seq_len)
  ix[[length(ix)]] <- i
  do.call("[", c(list(a), ix))
}


# tests

a <- array(1:24, 2:4)
last(a)

m <- matrix(1:6, 2)
last(m)

last(1:3)

last(as.matrix(BOD))      # BOD is a builtin data.frame