R言語がエレガントな解決策を持っているかもしれないいくつかの質問....
与えられた、バイナリ値1と0を含む行列m、および列インデックスのベクトルv
- vの整数でインデックス付けされた各列の値が1であるmのすべての行を抽出する関数を作成するにはどうすればよいですか?
- 追加機能として、対応する行とともに行インデックスをどのように返すのでしょうか。
例を挙げて説明すると、おそらく最高です。
私が求めているロジックが関数selectByIndices(matrix、indexVector)にあると仮定します。
したがって、マトリックス(またはおそらく同等のデータフレーム)がある場合:
>(m= matrix(c( 1, 0, 1, 1, 1,0, 1, 1, 0, 1,1, 0, 1, 1, 0,1, 1, 1,
0, 1,0, 1, 0, 0, 1), 5))
[,1] [,2] [,3] [,4] [,5]
[1,] 1 0 1 1 0
[2,] 0 1 0 1 1
[3,] 1 1 1 1 0
[4,] 1 0 1 0 0
[5,] 1 1 0 1 1
およびインデックスベクトル:
>c1 = c(1,3,4)
>c2 = c(4,5)
>c3 = c(1,3,5)
関数は次のように動作します。
>selectByIndices( m, c1)
[,1] [,2] [,3] [,4] [,5]
[1,] 1 0 1 1 0
[3,] 1 1 1 1 0
>selectByIndices( m, c2)
[,1] [,2] [,3] [,4] [,5]
[2,] 0 1 0 1 1
[5,] 1 1 0 1 1
>selectByIndices( m, c3)
#no rows (i.e. empty collection) returned
それが十分に明確であることを願って、あなたの助けに前もって感謝します。