Variable zurückgeben

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

Moderatoren: EDi, jogo

Antworten
RCarlos

Variable zurückgeben

Beitrag von RCarlos »

Hallo,

wie kann man die Berechnung einer Variable zurückgeben lassen, wenn man sie nicht mehr weiß?

z.B:

d<-mean(subset(df$Alter, df$Geschlecht<50))
d
44

nun möchte ich gerne mir wieder die Formel ausgeben lassen, also mean(subset...usw.

Danke
jogo
Beiträge: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: Variable zurückgeben

Beitrag von jogo »

Hallo RCarlos,

willkommen im Forum!
Das ist ein ähnliches Problem wie wenn Du auf einem Taschenrechner als Ergebnis eine 4 erhalten hast und jetzt herausfinden möchtest, welche Berechnung denn diesen Wert als Ergebnis geliefert hat
- Du siehst, so einfach ist das nicht ...
Als erstes solltest Du Deine Formel als Text speichern, also:

Code: Alles auswählen

dFormel <- "d <- mean(subset(df$Alter, df$Geschlecht<50))"
BTW: Deine Formel ist nicht besonders effizient, besser mean(df$Alter[df$Geschlecht<50])
Dann lies die Hilfetexte der Funktionen parse() und eval()

:!: Warnung: diese Funktionen gehören nicht in die Hände von R-Novizen :!:

Gruß, Jörg
RCarlos

Re: Variable zurückgeben

Beitrag von RCarlos »

Vielen Dank,

das mit dem Abspeichern der Formel ist hilfreich.
Wo wir dabei sind, ich habe derzeit ca. 20 Formeln im Umlauf. Gibt es ein Speichersystem dafür, ich verliere darüber den Überblick. zum Teil sind die Formeln sehr lang...

Gruß
jogo
Beiträge: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: Variable zurückgeben

Beitrag von jogo »

Du könntest die Formeln in einem vector of character ablegen ...

Gruß, Jörg
Benutzeravatar
EDi
Beiträge: 1599
Registriert: Sa Okt 08, 2016 3:39 pm

Re: Variable zurückgeben

Beitrag von EDi »

Ich denke wir sollten einen schritt zurück gehen:

Warum willst du das haben?

(das sollte man sich bei eval(parse()) immer fragen..)
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: Variable zurückgeben

Beitrag von bigben »

Der natürliche Speicherort für Formeln sind Funktionen! Du solltest Deine 20 Rechenwege wahrscheinlich in 20 Funktionen ablegen. Dann kannst Du jeder "Formel" einen sinnvollen Namen geben, kannst sie mehrfach immer wieder in sicher identischer Form anwenden und kannst Dir den Code jederzeit neu anzeigen lassen.

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

Re: Variable zurückgeben

Beitrag von RCarlos »

Hallo Bernhard,
genau das möchte ich ja. Könntest du mir ein Beispiel geben?
Folgende ist doch eine Funktion, oder?:
mwalter<-mean(d$Alter)

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

Re: Variable zurückgeben

Beitrag von bigben »

Nein, dass ist eine Zuweisung und ein Funktionsaufruf.
mean ist eine Funktion, mean(d$Alter) ist ein Funktionsaufruf. Letzteres ist gleichwertig mit dem Rechenergebnis, nicht mit der Berechnung selbst. Nehmen wir an, es geht um die Berechnung eines Kreisumfangs aus einem Radius. Dann kannst Du folgende Funktion definieren:

Code: Alles auswählen

umf <- function(radius) 2*pi*radius
Wenn Du den Umfang eines Kreises mit Radius 3 errechnen möchtest, dann schreibst Du

Code: Alles auswählen

umf(3)
und wenn Du den Umfang von fünf Kreisen mit den Radiüssen c(1, 2, 3, 4, 5) berechnen möchtest, dann schreibst Du

Code: Alles auswählen

umf(c(1,2,3,4,5))
und wenn Du vergessen hast, wie man das berechnet, dann schreibst Du (ganz ohne Klammern!) Probier es mal aus. Trifft das Dein Problem?

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: Variable zurückgeben

Beitrag von jogo »

Hallo RCarlos,

Bernhard meinte bestimmt, dass Du Dir Deine eigenen Funktionen definieren kannst:

Code: Alles auswählen

meineSupertolleFunktion <- function(x) {...} 
die Du dann jederzeit wieder verwenden kannst:

Code: Alles auswählen

diesenWert.habe.ich.berechnet <- meineSupertolleFunktion(d$Alter)
Was Du da vorführst, ist der Aufruf einer Funktion. Die Funktion heißt mean und Du übergibst der Funktion beim Aufruf ein Argument (nämlich das Objekt d$Alter). Da Du den Parameter nicht benannt hast, wird er entsprechend der Reihenfolge der Parameter in der Funktionsdefinition zugeordnet, siehe den Hilfetext von mean():

Code: Alles auswählen

?mean
Die Funktion rechnet ein Ergebnisobjekt aus (siehe Abschnitt Value im Hilfetext). Diesen Wert speicherst Du per '<-' in dem Objekt mwalter (falls das Objekt noch nicht vorhanden ist, wird es angelegt; falls es bereits vorhanden ist, wird es überschrieben).

Gruß, Jörg
p.s.: Bitte verwende in Deinen Nachrichten die Formatierung für Codestücke: viewtopic.php?f=20&t=29
Benutzeravatar
EDi
Beiträge: 1599
Registriert: Sa Okt 08, 2016 3:39 pm

Re: Variable zurückgeben

Beitrag von EDi »

Btw: man kann auch Funktionen schreiben, die Funktionen erstellen. Das kann nützlich sein, wenn man eine Reihe von verwandten Funktionen benötigt.

Oder man kann Funktionen schreiben, die andere Funktionen verändern.
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