配列をサブセット化する場合、Rは、次元の1つが長さ1であるかどうかによって、動作が異なります。ディメンションの長さが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
私の見解では、axとayは同じであり、それらに対して同じサブセット操作を実行すると、同じ次元の配列が返されるはずです。Rが2つのケースを処理する方法は役立つかもしれませんが、私が書いているコードでは望ましくありません。つまり、サブセット化された配列を別の関数に渡すと、前の段階で次元を長さ1に減らした場合、その関数は次元が欠落している配列を取得します。(したがって、この場合、Rの柔軟性により、コードの柔軟性が低下します!)
サブセット化中にRが長さ1の次元を失うのを防ぐにはどうすればよいですか?インデックスを作成する別の方法はありますか?設定するフラグはありますか?