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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。