Typ-Fehler-R-08-name-clash

R
error
string
mtcars
Published

November 15, 2023

Aufgabe

R spuckt eine komische Fehlermeldung aus. Was ist nur los? Hat R einen schlechten Tag?

Schauen wir uns die Sache näher an:

library(dplyr)
library(MASS)

mtcars_small <-
  mtcars %>% 
  select(hp, am)
Error in select(., hp, am): unused arguments (hp, am)

Oh nein! Fehler!

Was ist nur los?

Hinweise:











Lösung

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.

  1. 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.

library(dplyr)
#library(MASS)

mtcars %>% 
  select(hp, am)
Error in select(., hp, am): unused arguments (hp, am)

Und schon geht’s!

  1. Paketnamen vor Funktionsnamen anfügen
#library(dplyr)
#library(MASS)

mtcars %>% 
  dplyr::select(hp, am) %>% 
  dplyr::filter(hp > 200)
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
  1. Paket conflicted nutzen

Hier gibt’s dazu nähere Infos.


Categories:

  • R
  • error
  • string