2016-03-23 3 views

Antwort

5

die outer Funktion wird mit "+":

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 

Dies ist übrigens im Grunde eine Abkürzung für die folgende vektorisiert Ansatz:

matrix(rep(1:6, 6) + rep(1:6, each = 6), nrow = 6) 
+0

Viel lieber das erste. Ich konnte es nicht aus meinem Kopf herausbekommen, dass ich versuchte, einen Cross-Join zu machen. Manchmal kommt die Terminologie nur in die Quere. –

+0

@NickLarsen Der "cross join" -Ansatz in R würde "expand.grid", z. 'expand.grid (x = 1: 6, y = 1: 6)%>% mutate (gesamt = x + y)' und würde eine 36-reihige df anstelle einer 6x6 Matrix zurückgeben. Interessanterweise hat tidyr nun eine 'crossing'-Funktion, die wie' expand.grid' arbeitet, aber ein 'tbl_df' zurückgibt. –

2

Hier ist eine andere Möglichkeit:

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 
Verwandte Themen