0
行インデックスとhe colインデックスの合計に等しいセル値を持つ6x6行列を作成しようとしています。私はループを使用してこれを行うことができますが、ベクトル関数を使用してこれを行う方法があるのだろうかと思います。行とcolインデックスの関数に等しい値を持つ行列を作成します。
行インデックスとhe colインデックスの合計に等しいセル値を持つ6x6行列を作成しようとしています。私はループを使用してこれを行うことができますが、ベクトル関数を使用してこれを行う方法があるのだろうかと思います。行とcolインデックスの関数に等しい値を持つ行列を作成します。
は "+" でouter
機能を使用します。
outer(1:6, 1:6, "+")
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] 2 3 4 5 6 7
[2,] 3 4 5 6 7 8
[3,] 4 5 6 7 8 9
[4,] 5 6 7 8 9 10
[5,] 6 7 8 9 10 11
[6,] 7 8 9 10 11 12
ところで、これは基本的には、以下のベクトル化されたアプローチのためのショートカットです:
matrix(rep(1:6, 6) + rep(1:6, each = 6), nrow = 6)
は、ここに別の可能性です:
m <- matrix(NA,6,6)
m <- col(m)+row(m)
# [,1] [,2] [,3] [,4] [,5] [,6]
#[1,] 2 3 4 5 6 7
#[2,] 3 4 5 6 7 8
#[3,] 4 5 6 7 8 9
#[4,] 5 6 7 8 9 10
#[5,] 6 7 8 9 10 11
#[6,] 7 8 9 10 11 12
最初の方がずっと好きです。私はクロス・ジョイントをしようとしていたことを私の頭から出すことができませんでした。場合によっては、用語がちょうど途切れることもあります。 –
@NickLarsen Rの "cross join"アプローチは 'expand.grid'を使用します。 'expand.grid(x = 1:6、y = 1:6)%>%mutate(total = x + y)'を返し、6行6列ではなく36行dfを返します。興味深いことに、tidyrは 'expand.grid'のように動作し、' tbl_df'を返す 'crossing'関数を持っています。 –