Как передать «ничто» в качестве аргумента `[` для поднабора?

Я надеялся, что смогу построитьdo.call формула для поднабора без необходимости идентифицировать фактический диапазон каждого измерения во входном массиве. Проблема, с которой я сталкиваюсь, заключается в том, что я не могу понять, как имитировать прямую функциюx[,,1:n,] где отсутствие записи в других измерениях означает «захватить все элементы».

Вот пример кода, который не работает. Насколько я могу сказать, либо[ или жеdo.call заменяет мойNULL список значений с1 для индекса.

x<-array(1:6,c(2,3))
dimlist<-vector('list', length(dim(x)))
shortdim<-2
dimlist[[shortdim]] <- 1: (dim(x)[shortdim] -1)
flipped <- do.call(`[`,c(list(x),dimlist)) 

Я полагаю, я мог бы решить проблему, присвоив значение-2*max(dim(x)) к каждому элементуdimlist, но блин.
(FWIW, у меня есть альтернативные функции, которые выполняют желаемую работу либо черезmelt/recast или страшный "построить строку, а затемeval(parse(mystring)) , но я хотел сделать это "лучше".)

Редактировать: кроме этого, я запустил версию этого кода (с эквивалентом установки TRUE в DWin) для функции, которая использовалаmelt & acast ; последний был в несколько раз медленнее и не вызывал удивления.

Ответы на вопрос(5)

Ваш ответ на вопрос