使用从 R 中的向量创建的名称分配给对象

Assigning to objects using names created from a vector in R

我有两个向量:

years<-c(1995:1999)
values<-c(1:5)

我想创建五个对象,分别命名为"Obj1995"、"Obj1996"等,并按照values中的顺序给它们赋值,这样Obj1995==1Obj1996==2

我尝试使用 assign():

assign(paste0("Obj",years),values)

但这不是向量化的,所以它只创建了一个对象,包含所有 values

In assign(paste0("Obj",years),values) :
  only the first element is used as variable name

有没有不用 for 循环实现我的目标的方法?

我们可以在 named list

上使用 list2env
list2env(as.list(setNames(values, paste0("Obj", years))), envir = .GlobalEnv)

Obj1995
#[1] 1
Obj1996
#[1] 2

assign 可以与 for 循环一起使用

rm(list = ls(pattern = "^Obj\d{4}$")) # remove any objects 
for(i in seq_along(values)) assign(paste0("Obj", yearsi]), value = values[i])