Variable zurückgeben

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

Moderatoren: EDi, jogo

Antworten
RCarlos
Beiträge: 3
Registriert: Do Mai 18, 2017 7:52 pm

Variable zurückgeben

Beitrag von RCarlos » Do Mai 18, 2017 7:53 pm

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: 219
Registriert: Fr Okt 07, 2016 8:25 am

Re: Variable zurückgeben

Beitrag von jogo » Do Mai 18, 2017 8:08 pm

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
Beiträge: 3
Registriert: Do Mai 18, 2017 7:52 pm

Re: Variable zurückgeben

Beitrag von RCarlos » Do Mai 18, 2017 8:20 pm

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: 219
Registriert: Fr Okt 07, 2016 8:25 am

Re: Variable zurückgeben

Beitrag von jogo » Do Mai 18, 2017 8:48 pm

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

Gruß, Jörg

Benutzeravatar
EDi
Beiträge: 170
Registriert: Sa Okt 08, 2016 3:39 pm

Re: Variable zurückgeben

Beitrag von EDi » Do Mai 18, 2017 11:04 pm

Ich denke wir sollten einen schritt zurück gehen:

Warum willst du das haben?

(das sollte man sich bei eval(parse()) immer fragen..)
Website
github

Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
Bild

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

Re: Variable zurückgeben

Beitrag von bigben » Fr Mai 19, 2017 10:17 am

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
Beiträge: 3
Registriert: Do Mai 18, 2017 7:52 pm

Re: Variable zurückgeben

Beitrag von RCarlos » Fr Mai 19, 2017 4:15 pm

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: 192
Registriert: Mi Okt 12, 2016 9:09 am

Re: Variable zurückgeben

Beitrag von bigben » Fr Mai 19, 2017 4:23 pm

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: 219
Registriert: Fr Okt 07, 2016 8:25 am

Re: Variable zurückgeben

Beitrag von jogo » Fr Mai 19, 2017 4:26 pm

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: 170
Registriert: Sa Okt 08, 2016 3:39 pm

Re: Variable zurückgeben

Beitrag von EDi » Sa Mai 20, 2017 12:02 am

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.
Website
github

Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
Bild

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste