Das Problem ist, dass es in beiden Paketen, {MASS} und {dplyr} (dasjenige Paket im tidyverse, in dem select() wohnt), eine Funktion namens select vorhanden ist.
Es kommt zu einem “Name Clash”, einer Namenskollision.
Wenn mehrere Funktion gleichen Namens geladen (“attached”) sind, so “gewinnt” diejenige Funktion, die als letztes geladen wurde, in unserem Fall ist das die Funktion aus {MASS}.
Es gibt eine Reihe von Lösungen.
Nur das benötigte Paket starten
Zuerst “entladen” wir MASS, da wir es nicht benötigen:
detach("package:MASS", unload =TRUE)
Alternativ (und einfacher) könnten wir R neu starten: Session > Restart R.
hp am
Duster 360 245 0
Cadillac Fleetwood 205 0
Lincoln Continental 215 0
Chrysler Imperial 230 0
Camaro Z28 245 0
Ford Pantera L 264 1
Maserati Bora 335 1
---exname: Typ-Fehler-R-08-name-clashexpoints: 1extype: stringexsolution: NAcategories:- R- error- stringdate: '2023-11-15'slug: Typ-Fehler-R-08-name-clashtitle: Typ-Fehler-R-08-name-clash---# AufgabeR spuckt eine komische Fehlermeldung aus.Was ist nur los?Hat R einen schlechten Tag?Schauen wir uns die Sache näher an:```{r error=TRUE}library(dplyr)library(MASS)mtcars_small <- mtcars %>% select(hp, am)```Oh nein! Fehler!Was ist nur los?Hinweise:- Orientieren Sie sich im Übrigen an den [allgemeinen Hinweisen des Datenwerks](https://datenwerk.netlify.app/hinweise).</br></br></br></br></br></br></br></br></br></br># LösungDas Problem ist, dass es in beiden Paketen, `{MASS}` und `{dplyr}` (dasjenige Paket im `tidyverse`, in dem `select()` wohnt), eine Funktion namens `select` vorhanden ist.Es kommt zu einem "Name Clash", einer Namenskollision.Wenn mehrere Funktion gleichen Namens geladen ("attached") sind, so "gewinnt" diejenige Funktion, die als *letztes* geladen wurde, in unserem Fall ist das die Funktion aus `{MASS}`.Es gibt eine Reihe von Lösungen.1. Nur das benötigte Paket startenZuerst "entladen" wir `MASS`, da wir es nicht benötigen:```{r}detach("package:MASS", unload =TRUE)```Alternativ (und einfacher) könnten wir R neu starten: `Session > Restart R`. ```{r error=TRUE}library(dplyr)#library(MASS)mtcars %>% select(hp, am)```Und schon geht's!2. Paketnamen vor Funktionsnamen anfügen```{r error=TRUE}#library(dplyr)#library(MASS)mtcars %>% dplyr::select(hp, am) %>% dplyr::filter(hp > 200)```3. Paket `conflicted` nutzen[Hier](https://conflicted.r-lib.org/) gibt's dazu nähere Infos.---Categories: - R- error- string