0
我知道我們可以使用assign
爲字符名稱向量賦值。例如給索引的字符命名變量賦值一個
assign("target",1:5)
但是,如果我們想改變target
的第1個要素(target
可以是一個向量/矩陣/列表),我們應該怎麼辦呢? target
這裏也可以是一個矩陣,所以我們可以改變一個元素,一行或一列。 我想要做這樣的事情
target[1] <- 99
如果我使用
assign("target[1]",99)
只會產生一個新的對象名爲target[1]
和值是99。下面是一個簡單和審判例如
# This function is meaningless, just used to show my situation
# variable_name is a character
example_function <- function(variable_name){
assign(variable_name,1:5)
if(rnorm(1)>1){
variable_name[1] <- 99 #This will not work and I just need some function to achive this purpose
}
}
example_function("justAname")
'目標[1] < - 99'正常工作...有什麼問題? –
變量名是由函數內部生成的,所以當我們想要改變變量的一個元素時,我們不知道變量名 –
assign()函數的作用是創建一個新的變量,其中第一個參數爲其名稱。這意味着在assign(「target」,1:5)之後,將會有一個新的變量,名爲'target',其值爲1到5.如果你執行'print(target)',你會看到你的新變量。因此,執行'target [1] < - 99'會把'target'當作一個正常的變量,讓你做這個任務。試試吧,它的工作原理 –