我有两个向量:
years<-c(1995:1999)
values<-c(1:5)
我想创建五个对象,分别命名为“ Obj1995”,“ Obj1996”等,并按此顺序为其分配values
中的值,以便Obj1995==1
,Obj1996==2
等
我尝试使用assign()
:
assign(paste0("Obj",years),values)
但是没有被向量化,因此它只创建了一个对象,其中包含所有values
:
In assign(paste0("Obj",years),values) :
only the first element is used as variable name
有没有一种方法可以实现我的目标?
答案 0 :(得分:2)
我们可以在list2env
named
上使用list
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])