私は非常に単純な関数を達成しようとしています:「by」を使用して選択された行列のサブセットごとの行数を数えます (m1 は 4 列の行列です):
by(m1, m1[,2:4], nrow)
しかし、「引数は同じ長さでなければなりません」というエラーが表示されます。私が理解していることから、選択されたサブセットは、行が1つしかない場合、行列ではなくベクトルです。したがって、「nrow」は無効になります。どうすればこれを処理できますか?
NROW関数は、行列、データフレーム、およびベクトルで機能します。
> NROW(1:3)
#[1] 3
マトリックス引数にのみ有効なのは正しいnrow
ので、マトリックスを渡さないのはなぜですか?
> nrow(1:3)
NULL
> nrow(matrix(1:3,ncol=3))
[1] 1
nrow
への呼び出しをに置き換えるだけfunction(x) nrow(matrix(x,ncol=3))
です。完全な式は次のようになります。
by(m1, m1[,2:4], function(x) nrow(matrix(x,ncol=3)))