assign
位于 base
包(package)。 说明
为环境中的名称分配值。
用法
assign(x, value, pos = -1, envir = as.environment(pos),
inherits = FALSE, immediate = TRUE)
参数
x |
以字符串形式给出的变量名称。不进行强制转换,并且将使用长度大于 1 的字符向量的第一个元素,并发出警告。 |
value |
要分配给 |
pos |
在哪里做作业。默认情况下,分配到当前环境。有关其他可能性,请参阅“详细信息”。 |
envir |
要使用的 |
inherits |
是否应该检查环境的封闭框架? |
immediate |
被忽略的兼容性函数。 |
细节
对 x
给出的名称没有限制:它可以是非语法名称(请参阅 make.names
)。
pos
参数可以指定以多种方式分配对象的环境:作为 -1
(默认)、作为正整数(search
列表中的位置);作为搜索列表中元素的字符串名称;或作为 environment
(包括使用 sys.frame
访问当前活动的函数调用)。 envir
参数是指定环境的另一种方法,但主要是为了向后兼容。
assign
不调度赋值方法,因此不能用于设置向量、名称、属性等元素。
请注意,对附加列表或 DataFrame 的分配会更改附加副本,而不是原始对象:请参阅 attach
和 with
。
值
调用此函数是因为它的副作用,即将 value
分配给变量 x
。如果未指定 envir
,则分配将在当前活动环境中进行。
如果 inherits
是 TRUE
,则搜索所提供环境的封闭环境,直到遇到变量 x
为止。然后在遇到该变量的环境中分配该值(前提是绑定未锁定:请参阅lockBinding
:如果是,则会发出错误信号)。如果未遇到该符号,则在用户工作区(全局环境)中进行分配。
如果 inherits
是 FALSE
,则分配发生在 envir
的初始帧中,除非现有绑定已锁定或不存在现有绑定且环境已锁定(发出错误信号时)。
例子
for(i in 1:6) { #-- Create objects 'r.1', 'r.2', ... 'r.6' --
nam <- paste("r", i, sep = ".")
assign(nam, 1:i)
}
ls(pattern = "^r..$")
##-- Global assignment within a function:
myf <- function(x) {
innerf <- function(x) assign("Global.res", x^2, envir = .GlobalEnv)
innerf(x+1)
}
myf(3)
Global.res # 16
a <- 1:4
assign("a[1]", 2)
a[1] == 2 # FALSE
get("a[1]") == 2 # TRUE
参考
Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth & Brooks/Cole.
也可以看看
<-
、 get
,assign()
、 exists
、 environment
的逆。
相关用法
- R assignOps 赋值运算符
- R as.Date 日期与字符之间的转换函数
- R as.POSIX* 日期时间转换函数
- R asplit 按边距分割数组/矩阵
- R as.environment 强制环境对象
- R as.function 将对象转换为函数
- R as.data.frame 强制数据帧
- R apply 在数组边距上应用函数
- R agrep 近似字符串匹配(模糊匹配)
- R append 向量合并
- R attributes 对象属性列表
- R abbreviate 缩写字符串
- R all.equal 测试两个对象是否(几乎)相等
- R aperm 数组转置
- R args 函数的参数列表
- R attr 对象属性
- R array2DF 将数组转换为 DataFrame
- R autoload 按需加载包
- R attach 将一组 R 对象附加到搜索路径
- R all.names 查找表达式中的所有名称
- R any 有些值是真的吗?
- R array 多路阵列
- R all 所有的值都是真的吗?
- R file.path 构造文件路径
- R grep 模式匹配和替换
注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Assign a Value to a Name。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。