Quando si sottomettono gli array, R si comporta in modo diverso a seconda che una delle dimensioni sia di lunghezza 1 o meno. Se una quota ha lunghezza 1, quella dimensione viene perso durante sottoinsiemi:R array di subset: dimensione persa quando la sua lunghezza è 1
ax <- array(1:24, c(2,3,4))
ay <- array(1:12, c(1,3,4))
dim(ax)
#[1] 2 3 4
dim(ay)
#[1] 1 3 4
dim(ax[,1:2,])
#[1] 2 2 4
dim(ay[,1:2,])
#[1] 2 4
Dal mio punto di vista, ax e ay è la stessa, ed eseguendo la stessa operazione sottoinsieme sopra dovrebbe restituire un array con le stesse dimensioni . Posso vedere che il modo in cui R gestisce i due casi potrebbe essere utile, ma è indesiderabile nel codice che sto scrivendo. Significa che quando passo una matrice subsettita ad un'altra funzione, la funzione otterrà una matrice che manca una dimensione, se mi è capitato di ridurre una dimensione alla lunghezza 1 in una fase precedente. (Quindi in questo caso la flessibilità di R sta rendendo il mio codice meno flessibile!)
Come posso evitare che R perda una dimensione di lunghezza 1 durante il subsetting? C'è un altro modo di indicizzare? Qualche bandiera da impostare?
non identico, ma forse interessare: http://stackoverflow.com/questions/12196724/generally-disable-dimension-dropping-for-matrices –