Sind die folgenden zwei äquivalent, d. H. Definieren sie die gleiche Funktion?Syntax für Funktionen in R?
function(df) {lm(mpg ~ wt, data=df)}
und
function(df) lm(mpg ~ wt, data=df)
Insbesondere Ich bin verwirrt darüber, warum es möglich ist, Funktionen ohne geschweifte Klammern in R. geschweiften Klammern
sind notwendig für die Definition einer Funktion nur zu schreiben, wenn die Funktionsdefinition erstreckt sich über mehr als eine Zeile?
(vielleicht etwas darüber, wie R und Python technisch die Semikolons von C unterstützen, aber es ist eine schlechte Praxis betrachtet, sie zu benutzen?)
Dies scheint vielleicht zu erklären, warum Menschen tun, verwenden im Allgemeinen nicht geschweiften Klammern bei der Definition anonyme Funktionen, weil anonyme Funktionen in der Regel kurz sind und somit in eine Zeile passen, so dass geschweifte Klammern nicht notwendig sind.
Aber wäre es möglich, anonyme Funktionen zu übergeben, deren Definitionen länger als eine Zeile sind (das wäre wahrscheinlich eine schlechte Übung, aber das ist nicht mein Punkt)?
Wenn es möglich ist, erfordert das geschweifte Klammern?
@jogo Du hast Recht, dankt es für den Hinweis out - in einer Bearbeitung behoben – Chill2Macht
In Bezug auf "ist es möglich", können Sie es einfach versuchen. Zum Beispiel: y = {x = 1; x + 2} 'funktioniert, und Sie können herausfinden, wie Sie experimentieren. Wie gesagt, die geschweiften Klammern umhüllen einen Ausdruck und sind gerade in Funktionen nützlich. – Frank
@jogo, bitte als Antwort posten ... –