Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/82.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
子集可能具有长度为1的维度的R数组_R - Fatal编程技术网

子集可能具有长度为1的维度的R数组

子集可能具有长度为1的维度的R数组,r,R,我正在使用R中的三维数组,该数组的维数由用户参数确定,其中第一个维数的长度可以是1或更多 如果第一个维度的长度为两个或两个以上,则可以对数组进行子集设置: Arr2 <- array(rnorm(2 * 4 * 7), dim = c(2, 4, 7)) Arr2[,,1] Arr2正如您所注意到的,从?“[”只有两个选项可以控制维度,drop=TRUE(默认值,在本例中会同时删除第一个和第三个维度)和drop=FALSE,这两个选项都不会删除任何维度。这两个选项都不会返回所需的c(1

我正在使用R中的三维数组,该数组的维数由用户参数确定,其中第一个维数的长度可以是1或更多

如果第一个维度的长度为两个或两个以上,则可以对数组进行子集设置:

Arr2  <- array(rnorm(2 * 4 * 7), dim = c(2, 4, 7))
Arr2[,,1]
Arr2正如您所注意到的,从
?“[”
只有两个选项可以控制维度,
drop=TRUE
(默认值,在本例中会同时删除第一个和第三个维度)和
drop=FALSE
,这两个选项都不会删除任何维度。这两个选项都不会返回所需的
c(1,4)维度

解决此问题的一种方法是在子集操作后自行设置维度:

`dim<-`(Arrrrgh[,,1], dim(Arrrrgh)[1:2])
#           [,1]      [,2]       [,3]     [,4]
# [1,] 0.1548771 0.6833689 -0.7507798 1.271966

`DIM相关但不完全相同:能否显示所需结果
dim(Arrrrgh[,,1])
# NULL
dim(Arrrrgh[,,1,drop=FALSE])
# [1] 1 4 1
`dim<-`(Arrrrgh[,,1], dim(Arrrrgh)[1:2])
#           [,1]      [,2]       [,3]     [,4]
# [1,] 0.1548771 0.6833689 -0.7507798 1.271966
extract.arr <- function(arr, ...) {
  m <- match.call(expand.dots=FALSE)
  missing <- sapply(m[["..."]], is.symbol)
  dot.len <- sapply(m[["..."]], function(x) if (is.symbol(x)) 0 else length(eval(x)))
  cdim <- dim(arr)
  eff.dim <- ifelse(missing, cdim, dot.len)
  `dim<-`(do.call("[", c(list(arr), m[["..."]])), eff.dim[eff.dim > 1 | missing])
}
extract.arr(Arrrrgh, ,,1)
#            [,1]     [,2]      [,3]      [,4]
# [1,] -0.8634659 1.031382 0.4290036 0.8359372

extract.arr(Arrrrgh, ,,1:2)
# , , 1
# 
#            [,1]     [,2]      [,3]      [,4]
# [1,] -0.8634659 1.031382 0.4290036 0.8359372
# 
# , , 2
# 
#           [,1]      [,2]      [,3]       [,4]
# [1,] 0.6970842 0.1185803 0.3768951 -0.4577554

extract.arr(Arrrrgh, 1,1,)
# [1] -0.8634659  0.6970842  0.1580495 -1.6606119 -0.2749313  0.4810924 -1.1139392