2

だから私はあなたが持っているかどうかを知っています:

m = matrix(1:9, 3,3)
z = as.matrix(expand.grid(1:3, 1:3))

あなたがやる

m[z] 
# you get back 1 2 3 4 5 6 7 8 9

しかし、もしそうなら

m[] = m[z]
# You get back a matrix..

[]このオペレーターが何をするのか少し混乱していますか?m[][z]マトリックスのようなものやm[z][]マトリックスを返さないのはなぜですか? 変数に代入せずに行列を返すにはどうすればよいですかm[]

ありがとう!

4

1 に答える 1

2

ここで重要なのは、「[]」(実際には関数) への引数が指定した 2 列の行列である場合、結果は、最初の列が行を指定し、2 番目の列が列を指定するベクトルになるということです。操作されたマトリックス。これは言語の「機能」です (そして、私が追加するかもしれない非常に便利な機能です)。

引数には、行と列の可能な組み合わせのすべてが含まれている場合と含まれていない場合があるため、結果は、同じ次元の行列であるとは限りません。フォーム:m[] <- m[ z[1:4, ] ]は結果を生成しますが、警告も生成します。結果を見て、何が起こっているのかを理解する努力をする必要があります。

于 2013-04-18T19:56:46.017 に答える