以编程方式确定维度的r数组切片
有没有一种方法可以优雅地在R中的多维数组中指定一个切片,从而事先不知道维度的数量 例如,对于5维数组,可以使用以编程方式确定维度的r数组切片,r,multidimensional-array,slice,R,Multidimensional Array,Slice,有没有一种方法可以优雅地在R中的多维数组中指定一个切片,从而事先不知道维度的数量 例如,对于5维数组,可以使用 fourdimslice <- fivedimarray[,,,,1] fourdimslice您可以从abind软件包中使用asub # Sample data: a 5-dimensional array x <- array(seq_len(prod(2:6)), dim=2:6) library(abind) str( asub(x, 1, 5) ) # int
fourdimslice <- fivedimarray[,,,,1]
fourdimslice您可以从abind
软件包中使用asub
# Sample data: a 5-dimensional array
x <- array(seq_len(prod(2:6)), dim=2:6)
library(abind)
str( asub(x, 1, 5) )
# int [1:2, 1:3, 1:4, 1:5] 1 2 3 4 5 6 7 8 9 10 ...
str( x[,,,,1] )
# int [1:2, 1:3, 1:4, 1:5] 1 2 3 4 5 6 7 8 9 10 ...
all( asub(x, 1, 5) == x[,,,,1] )
# [1] TRUE
#示例数据:5维数组
x您可以从abind
软件包中使用asub
# Sample data: a 5-dimensional array
x <- array(seq_len(prod(2:6)), dim=2:6)
library(abind)
str( asub(x, 1, 5) )
# int [1:2, 1:3, 1:4, 1:5] 1 2 3 4 5 6 7 8 9 10 ...
str( x[,,,,1] )
# int [1:2, 1:3, 1:4, 1:5] 1 2 3 4 5 6 7 8 9 10 ...
all( asub(x, 1, 5) == x[,,,,1] )
# [1] TRUE
#示例数据:5维数组
这里有一个奇怪的方法来提取第一个切片
your.array=array(runif(27),dim=c(3,3,3)) # this is to create an example of array from which you want a slice.
array(your.array[1:prod(dim(your.array)[-1])],dim(your.array)[-1])
这里有一个奇怪的解决方案来提取第一个切片
your.array=array(runif(27),dim=c(3,3,3)) # this is to create an example of array from which you want a slice.
array(your.array[1:prod(dim(your.array)[-1])],dim(your.array)[-1])
如果您不想使用abind
包,看起来可以使用基于slice.index
的两行程序。我不知道哪个更有效
x <- array(seq_len(prod(2:6)), dim=2:6)
library(abind)
str( y <- asub(x, 1, 5) )
如果您不想使用abind
包,看起来可以使用基于slice.index
的两行程序。我不知道哪个更有效
x <- array(seq_len(prod(2:6)), dim=2:6)
library(abind)
str( y <- asub(x, 1, 5) )
看看是否回答了你的问题。我曾经写过一些代码(年轻愚蠢时:-),它查看数组的维数,并通过类似foo的循环构建字符串,看看是否回答了你的问题。我曾经写过一些代码(年轻愚蠢时:-))它查看数组的维数,并通过类似foo的循环来构建字符串
all.equal(y,z) ## TRUE