2015-10-09 3 views
4

Я ищу быстрый способ удалить избыточные размеры из массива в R, аналогично команде squeeze() в MATLAB. Прямо сейчас я объединять команды melt() и cast() из пакета reshape2, но должен быть менее сложный способ сделать то же самое.R: Эффективно удалить размеры синглтона из массива

Это, как я делаю это до сих пор:

require(reshape2) 
    array3d <- array(rep(0,4),dim=c(1,2,2)) # create a 2*2 matrix within a 3-d array 
    acast(melt(array3d),Var2~Var3) # recover the matrix 

ответ

7

Похоже, что вы ищете drop(), который «удалить [s] размеры массива, которые имеют только один уровень».

drop(array3d) 
#  [,1] [,2] 
# [1,] 0 0 
# [2,] 0 0 
+0

Это именно то, что я искал, спасибо. –