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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。