Next: , Previous: Making data frames, Up: Data frames



6.3.2 attach() 和 detach()

$ 符號訪問物件不是非常的方便,如accountants$statef。 一個非常有用的想法就是 讓列表或者資料框的分量可以通過 它們的名字直接調用。而且這種調用 是暫時性的,只是沒有顯式的引用列表名字。

函數 attach() 除了可以用目錄路徑作為參數, 也可以使用資料框。假定數據框 lentils 有三個變數 lentils$u, lentils$v, lentils$w,那麼

     > attach(lentils)

將把資料框綁定在搜索路徑的位置2(position 2)上1。如果 位置1沒有變數 u, vw,那麼 u, vw 可以直接在資料框中 訪問。此時,下麵的命令

     > u <- v+w

這個命令實際上沒有替換資料框中的變數 u,而是 被處於搜索路徑位置 1的工作空間中的變數 u 所遮罩。為了真正改變 資料框中的資料,最簡單的辦法還是使用 $ 符號:

     > lentils$u <- v+w

但是新的分量 u 是不可見的, 直到資料框綁定去除或者重新綁定。

去除一個資料框的綁定,可以使用

     > detach()

確切地說,該命令去掉了搜索路徑中與 位置 2的綁定。此時, u, vw 將不再可見,但可以 用 lentils$u 類似的命令來查看這些變數。如果實體所處的環境位置值大於2, 則可以通過把位置值直接傳給detach的辦法實現綁定去除, 不過,最為安全的辦法是直接使用名字,如 detach(lentils)detach("lentils")

Note: 最新版本的 R 裏面,列表和資料框 只能在位置 2 或更高的層次綁定。這樣就不可以 直接對綁定的列表和資料框賦值(因此,在一定程度上 它們是靜態的)。

Footnotes

[1] 譯者注:R 的搜索路徑是一種層狀結構,當前搜索位置是1,通過函數attach()可以進入搜索位置2。