Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
以编程方式确定维度的r数组切片_R_Multidimensional Array_Slice - Fatal编程技术网

以编程方式确定维度的r数组切片

以编程方式确定维度的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

有没有一种方法可以优雅地在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 [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