attach
位於 base
包(package)。 說明
數據庫附在R搜索路徑。這意味著數據庫的搜索方式是R在評估變量時,隻需給出名稱即可訪問數據庫中的對象。
用法
attach(what, pos = 2L, name = deparse1(substitute(what), backtick=FALSE),
warn.conflicts = TRUE)
參數
what |
‘database’。這可以是一個 |
pos |
指定 |
name |
用於附加數據庫的名稱。以 |
warn.conflicts |
合乎邏輯的。如果 注意:盡管由於曆史原因名稱為 |
細節
計算變量或函數名稱時R在列出的數據庫中搜索該名稱search
。使用適當類型的名字。
通過將 DataFrame (或列表)附加到搜索路徑,可以僅通過名稱來引用 DataFrame 中的變量,而不是作為 DataFrame 的組件(例如,在下麵的示例中,height
而不是比 women$height
)。
默認情況下,數據庫附加在搜索路徑中的位置 2,緊鄰用戶工作區之後、所有先前附加的包和先前附加的數據庫之前。可以將其更改為稍後使用 pos
選項附加到搜索路徑中,但不能附加到 pos = 1
。
數據庫實際上並未附加。相反,在搜索路徑上創建一個新環境,並將列表元素(包括 DataFrame 的列)或保存文件或環境中的對象複製到新環境中。如果使用 <<-
或 assign
分配給附加數據庫,則僅更改附加副本,而不更改原始對象。 (正常分配將在用戶工作區中放置修改後的版本:請參閱示例。)因此,attach
可能會導致混亂。
一個有用的 ‘trick’ 是使用 what = NULL
(或等效的 length-zero 列表)在搜索路徑上創建一個新環境,可以通過 assign
或 load
或 sys.source
將對象分配到該環境中。
以"package:"
開頭的名稱保留給library
,最終用戶不應使用。默認情況下,附加文件的名稱為 file:what
。為附加環境給出的 name
參數將由 search
使用,並且可以用作 as.environment
的參數。
值
environment
通過 "name"
屬性以不可見方式返回。
好的做法
attach
具有更改搜索路徑的副作用,這很容易導致找到特定名稱的錯誤對象。人們經常忘記detach
數據庫。
在交互式使用中, with
通常優於使用 attach
/detach
,除非 what
是 save()
生成的文件,在這種情況下 attach()
是 load()
的(安全)包裝器。
在編程中,函數不應該改變搜索路徑,除非這是它們的目的。 with
通常可以在函數內使用。如果沒有,好的做法是
-
始終使用獨特的
name
參數,並且 -
在
attach
調用之後立即使用唯一名稱對detach
進行on.exit
調用。
這可確保即使函數被中斷或 attach
調用後的代碼更改搜索路徑,搜索路徑也保持不變。
例子
require(utils)
summary(women$height) # refers to variable 'height' in the data frame
attach(women)
summary(height) # The same variable now available by name
height <- height*2.54 # Don't do this. It creates a new variable
# in the user's workspace
find("height")
summary(height) # The new variable in the workspace
rm(height)
summary(height) # The original variable.
height <<- height*25.4 # Change the copy in the attached environment
find("height")
summary(height) # The changed copy
detach("women")
summary(women$height) # unchanged
## Not run: ## create an environment on the search path and populate it
sys.source("myfuns.R", envir = attach(NULL, name = "myfuns"))
## End(Not run)
參考
Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth & Brooks/Cole.
也可以看看
相關用法
- R attributes 對象屬性列表
- R attr 對象屬性
- R apply 在數組邊距上應用函數
- R as.Date 日期與字符之間的轉換函數
- R agrep 近似字符串匹配(模糊匹配)
- R append 向量合並
- R assignOps 賦值運算符
- R as.POSIX* 日期時間轉換函數
- R asplit 按邊距分割數組/矩陣
- R abbreviate 縮寫字符串
- R all.equal 測試兩個對象是否(幾乎)相等
- R aperm 數組轉置
- R args 函數的參數列表
- R array2DF 將數組轉換為 DataFrame
- R autoload 按需加載包
- R all.names 查找表達式中的所有名稱
- R as.environment 強製環境對象
- R as.function 將對象轉換為函數
- R assign 為名稱分配值
- R any 有些值是真的嗎?
- R array 多路陣列
- R as.data.frame 強製數據幀
- R all 所有的值都是真的嗎?
- R file.path 構造文件路徑
- R grep 模式匹配和替換
注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Attach Set of R Objects to Search Path。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。