Matrizen

Allgemeine Statistik mit R, die Test-Methode ist noch nicht bekannt, ich habe noch keinen Plan!

Moderatoren: EDi, jogo

Antworten
Moritz

Matrizen

Beitrag von Moritz »

Guten Tag,

ich habe eine Frage zu Matrizen. Ich habe ein Grid (SAGA-GIS) zu einer Matrix gemacht und möchte mir jetzt den höchsten Wert anzeigen lassen und lokalisieren (Zeile und Spalte). Ich habe bereits die Matrix erstellt:

SAGA.Grid=raster("SAGA.Grid.sgrd")
dgmmatrix_SAGA.Grid=as.matrix(SAGA.Grid)
ergebnis1=max(dgmmatrix_SAGA.Grid)
ergebnis1

ergebnis1 zeigt mir jetzt den hächsten Wert an aber wie kann ich mir die Positionierung anzeigen lassen (Zeile und Spalte)?

Schon mal lieben Dank

Moritz
bigben
Beiträge: 2771
Registriert: Mi Okt 12, 2016 9:09 am

Re: Matrizen

Beitrag von bigben »

Hallo Moritz,

zunächst einmal willkommen im Forum. Gleich als erstes möchte ich Dich auf die Code-Tags hinweisen, die dieses Forum Dir bietet, um Code als solchen erkennbar und leichter lesbar zu machen. Darüber hinaus ist es fast immer sinnvoll, reproduzierbare Beispiele zu posten, also Code, der auch auf den Rechnern der anderen Forumsuser läuft.

So wie die Funktion max() Dir den höchsten Wert anzeigt, zeigt die Funktion which.max() die Stellen an, an denen der höchste Wert vorkommt. Allerdings nicht als x- und y-Koordinate, sondern innerhalb eines Vektors, als der die Matrix intern hinterlegt ist. Du musst Dir diese Stelle im Vector dann mithilfe der Zeilen- und Spaltenzahl selbst ausrechnen.

Schau Dir das hier mal in Ruhe an:

Code: Alles auswählen

A <- matrix(c(1,0,0, 0,0,0, 0,0,0), nrow=3)
print(A)
which.max(A)

A[2,1] <- 2
print(A)
which.max(A)

A[3,1] <- 3
print(A)
which.max(A)

A[1,2] <- 4
print(A)
which.max(A)

# Ganzzahldivision:
4%/%4
5%/%4
6%/%4
7%/%4
8%/%4

# Rest nach Ganzzahldivision
4%%4
5%%4
6%%4
7%%4
8%%4
HTH,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
bigben
Beiträge: 2771
Registriert: Mi Okt 12, 2016 9:09 am

Re: Matrizen

Beitrag von bigben »

Nachtrag: Es gibt folgenden Hack:

Code: Alles auswählen

B <- matrix(c(0,0,0, 0,0,1, 0,0,0), nrow=3)
print(B)
which(B == max(B), arr.ind = TRUE)
Mit integer-Werten ist das prima. Mit Fließkommawerten würde ich mich auf `==` nicht verlassen wollen.

LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Moritz

Re: Matrizen

Beitrag von Moritz »

Vielen Dank, hat geklappt.
Antworten