R-Klausur | For- und If-Loops

Interessantes ohne bestimmtes Thema!

Moderator: student

Athomas
Beiträge: 768
Registriert: Mo Feb 26, 2018 8:19 pm

Re: R-Klausur | For- und If-Loops

Beitrag von Athomas »

Sehr Ihr die for-Schleife in dieser Gruppe "schmutziger" Spracheigenschaften, deren Verwendung nur einmal in hundert Jahren gerechtfertigt ist?
An einer for-Schleife ist natürlich nix schmutzig, aber sie ist speziell in R häufig überflüssig, bremst und verhindert die Entwicklung einer Vektor-Denke - die ja ein wesentlicher Bestandteil der R-Philosophie ist.

Ein Anfänger, der R richtig lernen möchte - d.h. eine dauerhafte Nutzung über die nächsten Hausaufgaben hinaus im Sinn hat - sollte sie meiden wie der Teufel das Weihwasser :D !
Benutzeravatar
EDi
Beiträge: 1599
Registriert: Sa Okt 08, 2016 3:39 pm

Re: R-Klausur | For- und If-Loops

Beitrag von EDi »

Schleifen sind wichtig und nicht in R wegzudenken.

Man sollte dann aber bitte passende Aufgaben dazu stellen.
R ist Vektor-orientiert und darauf sollte man beim Lehren eine Fokus setzen. Sonst lernt man nicht die Stärken von R.

(aber ich habe auch das Gefühl, dass man in der Oberstufe heute weniger über Matrix-Algebra, Eigenwerte, etc lernt :().
Bitte immer ein reproduzierbares Minimalbeispiel angeben. Meinungen gehören mir und geben nicht die meines Brötchengebers wieder.

Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
Bild.
bigben
Beiträge: 2771
Registriert: Mi Okt 12, 2016 9:09 am

Re: R-Klausur | For- und If-Loops

Beitrag von bigben »

Also ich habe in meinem Mathematikleistungskurs damals vor 25 Jahren schon keinerlei Matrizenrechnung gelernt und Eigenwerte standen nicht im Lehrplan, da bin ich mir ganz sicher.
Habe das bei aller Statistikbegeisterung nie so wirklich nachgeholt, was mir immer mal wieder auf die Füße fällt.

Was wäre denn eine anfängertaugliche Aufgabe, die man in R vorzugsweise mit einer for Schleife lösen sollte? Sind nicht alle einfachen Aufgaben in R ohne lösbar?

LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
jogo
Beiträge: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: R-Klausur | For- und If-Loops

Beitrag von jogo »

Es gibt schon einige Situationen, in denen man eine Iteration nicht einfach durch apply() o.ä. ersetzen kann, z.B. wenn in einer Reihe benachbarte Elemente verwendet werden müssen. (Besonders wenn die Elemente selbst komplex sind, z.B. Dataframes, ist es nicht mehr mit apply() u.ä. getan.)
Als Beispiel möchte ich die Fibonacci-Zahlen nennen. Üblicherweise gibt es zwei Varianten, deren Berechnung zu programmieren:
a) rekursiv
b) iterativ.
Beide Varianten sollte man kennen und auch deren Vor- und Nachteile.

Gruß, Jörg
bigben
Beiträge: 2771
Registriert: Mi Okt 12, 2016 9:09 am

Re: R-Klausur | For- und If-Loops

Beitrag von bigben »

Aber Fibonaccizahlen macht man doch später, wenn man zeigen will, wie ineffizient die sich anbietende rekursive Lösung ohne Memoization ist. Dafür werden Fibonaccizahlen wahrscheinlich schon seit den 1950ern eingesetzt. Die kann man nicht einfach so vorziehen für die for-Schleife.
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
jogo
Beiträge: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: R-Klausur | For- und If-Loops

Beitrag von jogo »

bigben hat geschrieben: Sa Apr 21, 2018 5:41 pm Aber Fibonaccizahlen macht man doch später, ... Die kann man nicht einfach so vorziehen für die for-Schleife.
Das kannst Du ja halten wie Du willst, m.E. spricht nichts dagegen, bestimmte Grundtypen von Algorithmen recht früh zu beschreiben.
... wenn man zeigen will, wie ineffizient die sich anbietende rekursive Lösung ohne Memoization ist. Dafür werden Fibonaccizahlen wahrscheinlich schon seit den 1950ern eingesetzt. Die kann man nicht einfach so vorziehen für die for-Schleife.
code-technisch ist die Rekursion sehr elegant und damit auch effizient (ein Aspekt der Effizienz). Allerdings sind Rekursionen meistens in der Laufzeit nicht effizient.
Was die Code-Effizienz der Rekursion angeht, ist natürlich bei den Fibonacci-Zahlen der Unterschied zur Iterativen Lösung nicht besonders groß. Dafür besteht auch bei der Iteration noch die Chance, ineffizient zu programmieren.
Das wäre bestimmt interessant, in einer Gruppe die Aufgabe zu stellen, dass jeder nach belieben programmieren darf und anschließend die Lösungen zu diskutieren.

Gruß, Jörg
Antworten