使用从 R 中的向量创建的名称分配给对象
Assigning to objects using names created from a vector in R
我有两个向量:
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
有没有不用 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])
我有两个向量:
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
有没有不用 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])