1. ホーム
  2. r

[解決済み] ベクトル/行列の末尾までのエレガントなインデックス付け

2023-06-19 14:19:25

質問

Rで、以下のようなことは可能でしょうか? i からベクトル/行列の終わりまですべてのインデックスが必要ですか? 例えば、私は3列目以降の部分行列が欲しいです。私は現在この方法しか知りません。

A = matrix(rep(1:8, each = 5), nrow = 5) # just generate some example matrix...

A[,3:ncol(A)] # get submatrix from 3rd column onwards

しかし、本当に ncol(A) ? 3列目以降をエレガントに表現する方法はないのでしょうか?例えば A[,3:] ? (または A[,3:...] )?

どのように解決するのですか?

時には、Rに何を伝えるのが簡単なこともあります。 しない が必要です。 つまり、ネガティブインデックスを使用して行列から列を除外するのです。

ここに、同じ結果をもたらす2つの別の方法があります。

A[, -(1:2)]
A[, -seq_len(2)]

結果

     [,1] [,2] [,3] [,4] [,5] [,6]
[1,]    3    4    5    6    7    8
[2,]    3    4    5    6    7    8
[3,]    3    4    5    6    7    8
[4,]    3    4    5    6    7    8
[5,]    3    4    5    6    7    8


しかし、聞かれたとおりに答えると 使用する ncol を使って列の数を求めます。 (同様に nrow で行数を求めます)。

A[, 3:ncol(A)]

     [,1] [,2] [,3] [,4] [,5] [,6]
[1,]    3    4    5    6    7    8
[2,]    3    4    5    6    7    8
[3,]    3    4    5    6    7    8
[4,]    3    4    5    6    7    8
[5,]    3    4    5    6    7    8