首页 文章

使用name()重命名数据帧组的列

提问于
浏览
0

我想重命名一堆具有名称功能的数据帧,但不能使用lapply或loop .

我有一组数据帧名称qcew.2007,qcew.2014等...我有名称的矢量我希望所有数据帧都有 . 他们都是一样的 . 矢量是名称colnm:

colnm = c("area_fips" , "own_code", "industry_code", "agglvl_code") # example shortened
 # groups has names of all data frames and goes to 2013
group =c("qcew.2007", "qcew.2008", "qcew.2009") 
    # using lapply
    names <- lapply(group, function(d){
     n = paste0(d)
     names(n) = colnm
    })
# using loop does not work either
   for (i in seq(group)) {
   names(group[[i]]) = colnm 
}

这两个选项都不起作用,因为它说我正在比较长度不均匀的向量 . 我一定错过了一些明显的东西 . 谢谢

2 回答

  • 0

    干得好 . 您需要使用 get ,否则您要为 group 中的字符向量指定名称:

    # sample data
    qcew.2007 <- data.frame(a=1, b=2, c=3, d=4)
    qcew.2008 <- data.frame(a=3, b=4, c=5, d=6)
    qcew.2009 <- data.frame(a=5, b=6, c=7, d=8)    
    
    
    for(i in 1:3)
        assign(group[i], `names<-`(get(group[i]), colnm))
    names(qcew.2007)
    # [1] "area_fips"     "own_code"      "industry_code" "agglvl_code"  
    names(qcew.2008)
    # [1] "area_fips"     "own_code"      "industry_code" "agglvl_code"  
    names(qcew.2009)
    # [1] "area_fips"     "own_code"      "industry_code" "agglvl_code"
    

    在这里使用 get 获取 group 中每个位置中命名的对象,然后使用 assign 将修改后的对象(通过更改列名修改)重新分配回该命名对象 .

  • 0

    也:

    list2env(lapply(mget(group), setNames, colnm),envir=.GlobalEnv)
    
     names(qcew.2007)
     #[1] "area_fips"     "own_code"      "industry_code" "agglvl_code"
    

相关问题