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

时间:2018-10-18 18:04:12

标签: r assign

我有两个向量:

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

有没有一种方法可以实现我的目标?

1 个答案:

答案 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])