2016-08-10 15 views
-2

Nun, ich habe viele Fragen gesucht, aber nichts funktioniert. Hier ist meine Frage, wurde ich gebeten, eine Matrix wie dieseWie erstellt man eine zunehmende Matrix?

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

erstellen mit der rep(), matrix() und seq() Funktion.

Ich möchte 1 zu jedem Wiederholungszyklus in seq(1:5) für 5 mal hinzufügen, aber ich weiß nicht wie. Würde jemand mir bei dieser Frage helfen?

+0

Zeigen Sie uns, was Sie bisher versucht haben (Code und Ausgabe). Sonst werden die Leute dies aus Mangel an Anstrengung ablehnen/vote-to-close (* "Gib mir den Codez" *). – smci

+0

Hinweis :: Werfen Sie einen Blick auf das 'each' Argument von' rep', während Sie bemerken, dass R Vektorrecycling verwendet (zB können Sie einen längeren Vektor zu einem kürzeren '1: 2 + c (0,0, 1,1) ') Sobald Sie die Sequenz erzeugt haben chuck es in einer Matrix Anruf – user20650

+1

Andere:' m = Matrix (, 5, 5); Reihe (m) + Spalte (m) -1L' – Frank

Antwort

2

Vielen Dank @ user20650! Habe ich es endlich heraus (Entschuldigen Sie mich nicht vertraut zu sein mit Stapel-Überlauf Funktionen)

Ich verwende den Code wie folgt:.

a = matrix(rep((1:5),each = 5),5,5,byrow = TRUE) 
b = matrix(rep((0:4),each = 5),5,5) 
a+b 

Und es funktioniert

+1

gut gemacht ... ein anderer Weg, der die Wiederverwertung benutzt, ist 'Matrix (1: 5, ncol = 5, nrow = 5) + rep (0: 4, jedes = 5) ' – user20650

+0

Da die Anfrage beinhaltet' seq() ', könnte dies auch eine Option sein:' Matrix (rep (seq (5) -1, jeder = 5) + rep (seq (5), 5), 5) ' . Es ist das gleiche wie die von @ user20650 vorgeschlagene Lösung, nur auf eine etwas andere Art und Weise geschrieben. – RHertel

+0

Ihr 'a' ist im Wesentlichen' row() 'Funktion und' b' ist 'col()' –

2
n = 5 
r = seq(1,n) 
matrix(rep(r,n),n,n,byrow = T) + r - 1 

oder alternativ wenn Sie die vorgeschriebenen Funktionen nicht benötigen

n = 5 
r = 1:n 
t(matrix(-1,n,n) + r) + r 
1

Überprüfen Sie col() und row():

a <- matrix(0, 5, 5) 
col(a) + row(a) - 1 
    [,1] [,2] [,3] [,4] [,5] 
[1,] 1 2 3 4 5 
[2,] 2 3 4 5 6 
[3,] 3 4 5 6 7 
[4,] 4 5 6 7 8 
[5,] 5 6 7 8 9 
Verwandte Themen