Loop und Liste

Wie rufe ich R-Funktionen auf, wie selektiere ich Daten, ich weiß nicht genau ....

Moderatoren: EDi, jogo

Antworten
Alfredo
Beiträge: 7
Registriert: Fr Nov 27, 2020 2:49 pm

Loop und Liste

Beitrag von Alfredo »

Hallo zusammen,
ich möchte für 336 verschiedene Variablen Pseudozufallszahlen generieren (normalverteilt, nach n, x_quer und sd). Die knapp 28.000 Einzelwerte sollen in eine Liste geschrieben werden. Da die Grundgesamtheiten n unterschiedlich groß sind, muss es wohl eine Liste statt eines Data Frames sein.
Zu Fuß habe ich es hinbekommen, aber als R-Anfänger scheitere ich schon seit längerem an der Schleife. :?
Wie komme ich dahin, die Schleife R-like zu schreiben, wie müsste sie wohl aussehen? Vielen Dank für eure Hinweise

Code: Alles auswählen

vec1 <- rnorm(tytDaten[1, 6],tytDaten[1, 7],tytDaten[1, 8])
vec2 <- rnorm(tytDaten[2, 6],tytDaten[2, 7],tytDaten[2, 8])
vec3 <- rnorm(tytDaten[3, 6],tytDaten[3, 7],tytDaten[3, 8])
vec3 <- rnorm(tytDaten[3, 6],tytDaten[3, 7],tytDaten[3, 8])
lstTyt <- list(Variable1=c(vec1), 
               Variable2=c(vec2),
               Variable3=c(vec3),
               Variable4=c(vec4))
Carsten
Athomas
Beiträge: 769
Registriert: Mo Feb 26, 2018 8:19 pm

Re: Loop und Liste

Beitrag von Athomas »

Eine Möglichkeit wäre

Code: Alles auswählen

Parameter <- data.frame(Anzahl=c(100,200,300,400), my=100*(1:4), sigma=1:4)

Sammlung  <- mapply(rnorm, Parameter$Anzahl, Parameter$my, Parameter$sigma)
Alfredo
Beiträge: 7
Registriert: Fr Nov 27, 2020 2:49 pm

Re: Loop und Liste

Beitrag von Alfredo »

Vielen Dank Athomas!
An map() bzw. Tidyverse hatte ich mich bisher noch nicht herangetraut. Das Beispiel kann ich nachvollziehen und konnte es für mein Thema anpassen. :D
Athomas
Beiträge: 769
Registriert: Mo Feb 26, 2018 8:19 pm

Re: Loop und Liste

Beitrag von Athomas »

Als bekennender Tidyverse-Skeptiker :D möchte ich aber hinzufügen, dass mapply() reinstes Standard-R ist und nuscht mit dem Tidyverse zu tun hat!
Alfredo
Beiträge: 7
Registriert: Fr Nov 27, 2020 2:49 pm

Re: Loop und Liste

Beitrag von Alfredo »

ups. Da habe ich mapply() mit map() verwechselt. :roll:
bigben
Beiträge: 2781
Registriert: Mi Okt 12, 2016 9:09 am

Re: Loop und Liste

Beitrag von bigben »

Ruhig, ganz ruhig, Brauner. Er weiß doch gar nicht, was er da gesagt hat und Im Grunde ist er doch im richtigen Team
! ;-)
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Benutzeravatar
EDi
Beiträge: 1599
Registriert: Sa Okt 08, 2016 3:39 pm

Re: Loop und Liste

Beitrag von EDi »

Alfredo hat geschrieben: So Jan 30, 2022 5:55 pm ups. Da habe ich mapply() mit map() verwechselt. :roll:
Das äquivalent (*) von mapply, wäre purrr::pmap(). :ugeek:
purrr::map() entspräche lapply().


(*) Wenn man die doku und Funktion liest & kennt macht es wenig bis keinen Unterschied, da man sich um die Mankos (für mich vorallem typen-stabilität) kümmern kann (z.B. valididerung oder simplify = FALSE & post-processing, ...).
Wenn nicht, dann kann das einen schonmal beisen...
Anstatt sapply() kann man vapply benutzen (sapply hab ich aus meinem Vokabular gestrichen, seitdem es mich mal in einem Projekt gebissen hat). Für mapply() gibt es leider kein äquivalent dazu.
purrr ist vermutlich (?) immer langsamer als das base-pendant.

Ist letztendlich eine persönlich Stil-frage - das was bei rumkommt ist gleich... Ich nutze einfach beides purrr & lapply/vapply :D
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.
Antworten