2014-07-11 6 views
14

Kiedy załadować paczkę w globalnym środowisku, mam następujący komunikatSens obiektów są maskowane przez globalnym środowisku

> library(saber) 

Attaching package: ‘saber’ 

The following objects are masked _by_ ‘.GlobalEnv’: 

    load.schedule, teamStats 

Nie wiem, co to znaczy, czy nie powinienem być zaniepokojony to.

Dlaczego ta wiadomość jest dostarczana i co ona oznacza?

Odpowiedz

14

Oznacza to, że masz obiekty (funkcje, zwykle) obecne w twoim środowisku globalnym o tej samej nazwie, co (wyeksportowane) rzeczy w twoim pakiecie. Wpisz search(), aby zobaczyć kolejność, w której R rozwiązuje nazwy.

Rozwiązaniem jest albo,

  1. nie tworzyć obiekty z tych nazw w globalnym środowisku
  2. zmiany nazwy obiektów w pakiecie do czegoś, co jest mniej prawdopodobne, aby stworzyć konflikt, albo przemyśleć decyzja o ich wyeksportowaniu lub
  3. pamiętaj, że zawsze będziesz musiał odwoływać się do tych obiektów jako saber::teamStats.

Prawdopodobnie (2) jest najlepszy, chyba że okoliczności, które doprowadziły do ​​wiadomości, są naprawdę niezwykłe.

4

Oznacza to, że w obszarze roboczym oraz w ładowanej bibliotece znajdują się obiekty o nazwach load.schedule, teamStats. Ostrzega Cię, że gdy zadzwonisz pod numer load.schedule, użyjesz go w swoim obszarze roboczym (ponieważ jest on pierwszy w ścieżce wyszukiwania), a nie w tym, który załączasz. Spróbuj na przykład:

ddply <- function(x) x + 1 
library(plyr) 

# Attaching package: ‘plyr’ 
# 
# The following object is masked _by_ ‘.GlobalEnv’: 
# 
#  ddply 

ddply(3) # the one we just defined is used, as global env is first in the search path 
#[1] 4 
3

Jest jedno trzecie domniemane pytanie, które nie wydaje mi się, aby w pełni odpowiedzieć na tę konkretną sprawę. Jak rozwiązać problem w sytuacji, gdy wcześniejsza wersja własnej funkcji utknęła w środowisku globalnym i zamaskowała nowe wersje, które próbujesz przetestować?

Zmiana nazwy funkcji przy każdym obrocie jest w tej sytuacji niepraktyczna. Miałem taką samą sytuację i stwierdziłem, że usunięcie pliku .Rdata w katalogu roboczym przed ponownym uruchomieniem R rozwiązało problem.

Zdarzyło mi się to tylko dwa razy w ciągu setek czasu składania moich paczek. Nadal nie jestem pewien, w jaki sposób funkcje czasami blokują się na poziomie globalnym.

Powiązane problemy