attach() 和 detach()
用 $ 符號訪問物件不是非常的方便,如accountants$statef。
一個非常有用的想法就是
讓列表或者資料框的分量可以通過
它們的名字直接調用。而且這種調用
是暫時性的,只是沒有顯式的引用列表名字。
函數 attach() 除了可以用目錄路徑作為參數,
也可以使用資料框。假定數據框 lentils
有三個變數 lentils$u, lentils$v,
lentils$w,那麼
> attach(lentils)
將把資料框綁定在搜索路徑的位置2(position 2)上1。如果
位置1沒有變數 u, v 或 w,那麼
u, v 和 w 可以直接在資料框中
訪問。此時,下麵的命令
> u <- v+w
這個命令實際上沒有替換資料框中的變數 u,而是
被處於搜索路徑位置 1的工作空間中的變數 u
所遮罩。為了真正改變
資料框中的資料,最簡單的辦法還是使用
$ 符號:
> lentils$u <- v+w
但是新的分量 u 是不可見的,
直到資料框綁定去除或者重新綁定。
去除一個資料框的綁定,可以使用
> detach()
確切地說,該命令去掉了搜索路徑中與
位置 2的綁定。此時,
u, v 和 w 將不再可見,但可以
用 lentils$u 類似的命令來查看這些變數。如果實體所處的環境位置值大於2,
則可以通過把位置值直接傳給detach的辦法實現綁定去除,
不過,最為安全的辦法是直接使用名字,如
detach(lentils) 和 detach("lentils")
Note: 最新版本的 R 裏面,列表和資料框 只能在位置 2 或更高的層次綁定。這樣就不可以 直接對綁定的列表和資料框賦值(因此,在一定程度上 它們是靜態的)。