Como passar "nada" como argumento para `[` para subconjuntos?
Eu estava esperando poder construir umdo.call
fórmula para subconjuntos sem ter que identificar o intervalo real de cada dimensão na matriz de entrada. O problema que estou correndo é que eu não consigo descobrir como imitar a função diretax[,,1:n,]
, onde nenhuma entrada nas outras dimensões significa "pegue todos os elementos".
Aqui está um código de exemplo, que falha. Tanto quanto eu posso dizer,[
oudo.call
substitui meuNULL
listar valores com1
para o índice.
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))
Eu suponho que eu poderia kludge uma solução, atribuindo o valor-2*max(dim(x))
para cada elemento dedimlist
mas sim.
(FWIW, eu tenho funções alternativas que fazem o trabalho desejado viamelt/recast
ou o temido "construir uma string e, em seguida,eval(parse(mystring))
, mas eu queria fazer "melhor".
Editar: como um aparte, eu corri uma versão deste código (com o equivalente da configuração TRUE do DWin) contra uma função que usavamelt & acast
; o último foi várias vezes mais lento, sem surpresa real.