Bei der Unterteilung von Arrays verhält sich R anders, je nachdem, ob eine der Dimensionen die Länge 1 hat oder nicht. Wenn eine Dimension Länge 1 hat, wird diese Dimension bei subsetting verloren:Subsetting R-Array: Dimension verloren, wenn seine Länge 1 ist
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
Aus meiner Sicht ax und ay die gleichen sind, und die Durchführung der gleichen Teilmenge Operation an ihnen sollte ein Array mit den gleichen Abmessungen zurückkehren . Ich kann sehen, dass die Art, wie R die beiden Fälle behandelt, nützlich sein könnte, aber in dem Code, den ich schreibe, ist es unerwünscht. Das bedeutet, dass wenn ich ein Teilmengen-Array an eine andere Funktion übergebe, die Funktion ein Array mit einer fehlenden Dimension erhalten würde, wenn ich eine Dimension zu einem früheren Zeitpunkt auf die Länge 1 reduzieren würde. (In diesem Fall macht die Flexibilität von R meinen Code weniger flexibel!)
Wie kann ich verhindern, dass R während der Teilmenge eine Dimension der Länge 1 verliert? Gibt es eine andere Möglichkeit der Indexierung? Einige Flagge zu setzen?
nicht identisch, aber vielleicht von Interesse: http://stackoverflow.com/questions/12196724/generally-disable-dimension-dropping-for-matrices –