jayinbluecity jayinbluecity - 23 days ago 6
R Question

array operation giving me merged table

So, I made 10 matrix of 10X1 dimension, one of them looks like this,

chains <- array(NA, dim = c(10, 1, 10))
chains

, , 10

[,1]
[1,] NA
[2,] NA
[3,] NA
[4,] NA
[5,] NA
[6,] NA
[7,] NA
[8,] NA
[9,] NA
[10,] NA


However, I want to keep last 6 observations from each matrix,
so I did,

chains <-chains[5:10,,]
chains

[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,] NA NA NA NA NA NA NA NA NA NA
[2,] NA NA NA NA NA NA NA NA NA NA
[3,] NA NA NA NA NA NA NA NA NA NA
[4,] NA NA NA NA NA NA NA NA NA NA
[5,] NA NA NA NA NA NA NA NA NA NA
[6,] NA NA NA NA NA NA NA NA NA NA


suddenly it gives me one table, which gives me dimensional error on later algorithm,

i still want my "chain" array looks like this,
, , 7

[,1]
[1,] NA
[2,] NA
[3,] NA
[4,] NA
[5,] NA
[6,] NA


, , 8

[,1]
[1,] NA
[2,] NA
[3,] NA
[4,] NA
[5,] NA
[6,] NA


, , 9

[,1]
[1,] NA
[2,] NA
[3,] NA
[4,] NA
[5,] NA
[6,] NA


, , 10

[,1]
[1,] NA
[2,] NA
[3,] NA
[4,] NA
[5,] NA
[6,] NA


I apologize for the bad formatting,
any help will be appreciated!

Answer

We need drop=FALSE to prevent the subset from dropping the dimensions

chainsN <- chains[5:10,,,drop=FALSE]
str(chainsN)
#logi [1:6, 1, 1:10] NA NA NA NA NA NA ...

It is mentioned in the help page of ?Extract

drop - For matrices and arrays. If TRUE the result is coerced to the lowest possible dimension