
detach
Odebrat objekt z cesty pro vyhledávání
sign {base} | Dokumentace R v češtině |
Popis
Funkce odebere databázi, tzn. odstraní ji ze seznamu search()
, který zahrnuje dostupné objekty R. Obvykle se jedná buď o datovou tabulku, připojenou pomocí funkce attach
, nebo o balík, který byl připojen funkcí library
.
Použití
detach(name, pos = 2L, unload = FALSE, character.only = FALSE, force = FALSE)
Argumenty
name |
objekt, který je primárně uvedený v |
pos |
index pozice v |
unload |
logická argument, který určuje, zda má či nemá být vymazán z paměti jmenný prostor, když dojde k odebrání balíku. Pokud balík obsahuje jmenný prostor a argument |
character.only |
logický argument, který určuje, zda |
force |
logický argument: má být balík odstraněn i přesto, že na něm závisí další připojené balíky? |
Detaily
Ve funkci je obvykle používán jeden číselný argument, který udává pozici na seznamu vyhledávání, nebo název (může být s i bez uvozovek) položky na seznamu vyhledávání, např. jako package:tools
.
Pokud má balík jmenný prosotr, ve výchozím nastavení nedojde při jeho odebrání k vymazání jmenného prostoru z paměti (a nemusí k tomu dojít ani při unload = TRUE
). Obvykle odebírání nevede k vymázávání žádného dynamicky načteného kompilovaného kódu (DLL). Navíc nebudou odstraněny z jmenného prostoru ani registrované S3 metody. Pokud použijete library
u balíku, jehož jmenný prostor je načtený, dojde k připojení exportů, které náleží již načtenému jmennému prostoru. Tedy odebrání a opětovné připojení balíku nemusí obnovit všechny komponenty balíku, proto to není doporučováno.
Hodnota
Navrácená hodnota je tzv. invisible. Je NULL
, pokud je balík odpojený. V opačném případě je to prostředí, které bylo navráceno funkcí attach
, když byl balík připojen (zahrnuje veškeré změny od chvíle, kdy došlo k připojení balíku).
Vhodné používání
detach()
bez argumentu odebere první položku z cesty pro vyhledávání hned po pracovní ploše. Volání tohoto příkazu může být tak jednoduché, jak je jednoduché nevšimnout si změny v cestě pro vyhledávání způsobené voláním attach
.
attach
/detach
by se nemělo používat u funkcí (viz nápověda pro attach
) a u interaktivního používání či ve skriptech je lepší odebírat prostřednictvím názvů.
Poznámka
Nelze odebrat pracovní plochu (pozice 1) ani balík base (poslední položka v seznamu) a jakýkoliv pokud o tuto operaci hodí chybové hlášení.
Vymazání některých jmenný prostorů může mít nežádoucí vedlejší projevy: např. vymazání grid zavře všechny grafické nástroje, a na některých systémech nelze znovu načíst tcltk, když byl jednou vymazán, a jakýkoliv takový pokus může vést ke spadnutí R.
Reference
Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth & Brooks/Cole.
Příklady
require(splines) # balík
detach(package:splines)
## nebo také
library(splines)
pkg <- "package:splines"
detach(pkg, character.only = TRUE)
## pozor: neprovádějte, pokud nemáte připojený balík 'splines'.
library(splines)
detach(2) # 'pos' je zde použito jako 'name'
## příklad připojení pomocí názvu
## a odebrání databáze pojmenované pomocí vektoru řetězců
attach_and_detach <- function(db, pos = 2)
{
name <- deparse(substitute(db))
attach(db, pos = pos, name = name)
print(search()[pos])
detach(name, character.only = TRUE)
}
attach_and_detach(women, pos = 3)