Nun können Sie direkt loslegen. Aus didaktischen Gründen wähle ich zunächst eine einfache Funktion, die Mittelwertberechnung, die natürlich schon in Excel verfügbar ist. Man kann anhand dieser Funktion das Zusammenspiel zwischen Excel und R gut zeigen. Der Mittelwert wird in R über die Standardfunktion "mean()" abgebildet.
Wie in VBA wird eine Funktionsdefinition in R für die Bereitstellung in Excel benötigt. Ich nenne diese Funktion "E.Mittelwert()". Damit soll kenntlich gemacht werden, dass es sich hierbei um eine speziell für Excel entwickelte Funktion handelt. So werden Überschneidungen mit bestehenden R-Funktionen vermieden.
Eine Funktion wird in R durch das Schlüsselwort "function" definiert. Der Funktionsrumpf wird in geschweifte Klammern gesetzt. Ohne auf die syntaktischen Feinheiten einzugehen, sei auf die folgende Definition verwiesen:
E.Mittelwert <- function(area) { mean(area,na.rm=TRUE) } |
R unterscheidet zwischen Groß- und Kleinschreibung. Dabei dominiert eindeutig die Kleinschreibung bei Befehlen und Variablen. Zuweisungen können mittels "=" oder "<-" erfolgen. Letzteres ist ungewöhnlich, kennzeichnet aber den R-Liebhaber.
"area" ist der Parameter, der aus Excel übergeben wird. Dieser wird an die Funktion "mean()" weitergeleitet. Weiterhin ist es wichtig, zu entscheiden, wie mit NULL- Werten umgegangen werden soll. Falls diese auftreten können, sind sie bei der Funktion "mean()" explizit durch den Parameter "na.rm" ("remove not applicable") auszuklammern.
Geben Sie diese Funktion in das Skript in der BERT-Konsole ein und wählen Sie "Speichern" im Datei-Menü (alternativ STRG + S). Beim Speichern werden die Funktionen automatisch für Excel aktualisiert bzw. bekannt gegeben.
Passen Sie aber auf, dass Ihnen kein Syntax-Fehler unterläuft. R moniert das zwar, aber man kann dies leicht übersehen:
Error in source(“D:\\MCT\\OneDrive\\Projekte_DB\\BERTI\\functions\\functions.R”) : D:\MCT\OneDrive\Projekte_DB\BERTI\functions\functions.R:95:7: unexpected '*' 94: # eval(parse(text=paste0("s$",lapply(ls(s),paste))[2]))[1] 95: s = 1+* |
Die Folge ist, dass nichts aus dem jeweiligen Script aktualisiert wird und somit auch keine neue Funktion erstellt wird.
Wenn Ihnen die Syntax nicht bekannt ist, geben Sie im Direktfenster ein Fragezeichen ein, gefolgt von dem Befehl. Dadurch öffnet sich der Browser mit hilfreichen Informationen.
Abb. 5: Hilfe zu mean()