Slovník | Vyhledávání | Mapa webu
 
Základy informatiky pro biologyCvičebnice jazyka R Dokumentace k základním funkcím detach

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 search()[pos], a má být odebrán. Může být udeven název bez uvozovek nebo řetězec znaků, ovšem nesmí se jednat o vektor řetězců. Jakékoliv uvedené číslo je bráno jako pos.

pos

index pozice v search(). Patří databázi, která má být odebrána. Pokud je name číslo, pak platí pos = name.

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 unload je TRUE, pokusí se funkce detach vymazat z paměti příslušný jmenný prostor přes unloadNamespace: pokud je jmenný prostor zaveden jiným jmenným prostorem, nebo pokud je unload FALSE, nedojde k žádnému vymazání.

character.only

logický argument, který určuje, zda name má být bráno jako řetězec znaků.

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)

 
vytvořil Institut biostatistiky a analýz Lékařské fakulty Masarykovy univerzity