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'当作一个正常的变量,让你做这个任务。试试吧,它的工作原理 –