0

私は非常に単純な関数を達成しようとしています:「by」を使用して選択された行列のサブセットごとの行数を数えます (m1 は 4 列の行列です):

by(m1, m1[,2:4], nrow)

しかし、「引数は同じ長さでなければなりません」というエラーが表示されます。私が理解していることから、選択されたサブセットは、行が1つしかない場合、行列ではなくベクトルです。したがって、「nrow」は無効になります。どうすればこれを処理できますか?

4

2 に答える 2

3

NROW関数は、行列、データフレーム、およびベクトルで機能します。

> NROW(1:3)
#[1] 3
于 2012-06-25T12:20:00.163 に答える
0

マトリックス引数にのみ有効なのは正しい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)))
于 2012-06-25T06:21:18.110 に答える