代码之家  ›  专栏  ›  技术社区  ›  iod

使用从R中的向量创建的名称指定给对象

  •  0
  • iod  · 技术社区  · 7 年前

    我有两个向量:

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

    values 按顺序,这样 Obj1995==1 , Obj1996==2 等。

    assign() :

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

    价值观 :

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

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

    1 回复  |  直到 7 年前
        1
  •  3
  •   akrun    7 年前

    我们可以用 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])
    
    推荐文章