Die Programmiersprache R kann durch Funktionen erweitert werden, die von anderen Nutzern erstellt wurden. Oftmals sind diese Erweiterungen in Paketen zusammengefasst. Ein Problem tritt allerdings dann auf, wenn in unterschiedlichen Paketen Funktionen enthalten sind, die den gleichen Namen tragen (siehe: Stackoverflow).
Ich nutze z.B. folgende Pakete sehr häufig:
- sfsmisc – Mit der Funktion
eaxis()
lassen sich schöne logarithmische Achsen erstellen. Die Beschriftung wird dabei von der Funktionpretty10exp()
übernommen. - Hmisc– Mit der Funktion
errbar()
lassen sich sehr leicht Fehlerbalken in Plots eintragen. - TeachingDemos – Mit der Funktion
subplot()
lassen sich sehr einfach Insets zu Plots hinzufügen.
Lädt man allerdings die Pakete,
## Installation der Pakete install.packages("sfsmisc", dependencies=T) install.packages("Hmisc", dependencies=T) install.packages("TeachingDemos", dependencies=T) ## Laden der Pakete library(package = "sfsmisc") library(package = "Hmisc") library(package = "TeachingDemos") |
dann erhält man folgende Fehlermeldungen:
Attache Paket: ‘Hmisc’ Das folgende Objekt ist maskiert from ‘package:survival’: untangle.specials Das folgende Objekt ist maskiert from ‘package:sfsmisc’: errbar Das folgende Objekt ist maskiert from ‘package:base’: format.pval, round.POSIXt, trunc.POSIXt, units
Man kann erkennen, dass sowohl Hmisc
als auch sfsmisc
eine Funktion namens errbar()
enthalten.
Attache Paket: ‘TeachingDemos’ Das folgende Objekt ist maskiert from ‘package:Hmisc’: cnvrt.coords, subplot
Man kann erkennen, dass sowohl TeachingDemos
als auch Hmisc
eine Funktion mit Namen subplot()
enthalten.
Um nun die Funktion aus einem bestimmten Paket zu verwenden, kann man R dies mit Hilfe von zwei Doppelpunkten ::
mitteilen:
# Verwende die Funktion subplot() aus dem Paket TeachingDemos TeachingDemos::subplot(...) # Verwende die Funktion errbar() aus dem Paket Hmisc Hmisc::errbar(...) |
Meine Empfehlung: Wenn man Funktionen aus einem Paket verwendet, sollte man beim Aufruf der Funktion immer diese Notation verwenden. Zum einen hilft es dem Leser zu erkennen, woher diese Funktion stammt. Zum anderen verhindert man unnötige Verwirrung, wenn man zu einem späteren Zeitpunkt Pakete einbindet, die Funktionen mit gleichem Namen enthalten.