Jak przekazać „nic” jako argument do `[` dla podzbioru?

Miałem nadzieję, że uda mi się skonstruowaćdo.call wzór na podzbiór bez konieczności identyfikowania rzeczywistego zakresu każdego wymiaru w tablicy wejściowej. Problem, z którym się spotykam, polega na tym, że nie mogę zrozumieć, jak naśladować funkcję bezpośredniąx[,,1:n,] , gdzie brak wpisu w innych wymiarach oznacza „złap wszystkie elementy”.

Oto przykładowy kod, który się nie udaje. O ile wiem, również[ lubdo.call zastępuje mojeNULL wartości listy z1 dla indeksu.

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)) 

Przypuszczam, że mógłbym stworzyć rozwiązanie, przypisując wartość-2*max(dim(x)) do każdego elementudimlist, ale fuj.
(FWIW, mam alternatywne funkcje, które wykonują żądaną pracę za pośrednictwemmelt/recast lub przerażony „zbuduj strunę, a potemeval(parse(mystring)) , ale chciałem to zrobić „lepiej”)

Edytuj: na marginesie, uruchomiłem wersję tego kodu (z odpowiednikiem TRUE w konfiguracji TRUE) przeciwko funkcji, która używałamelt & acast ; ten ostatni był kilka razy wolniejszy, bez prawdziwej niespodzianki.

questionAnswers(5)

yourAnswerToTheQuestion