2016-03-23 5 views

答えて

5

は "+" で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) 
+0

最初の方がずっと好きです。私はクロス・ジョイントをしようとしていたことを私の頭から出すことができませんでした。場合によっては、用語がちょうど途切れることもあります。 –

+0

@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'関数を持っています。 –

2

は、ここに別の可能性です:

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 
関連する問題