首页 > 解决方案 > 根据字符向量分配一组向量(自动化代码)

问题描述

我想做一系列的作业

rename2014 <- eas_dictionary$name2014
rename2015 <- eas_dictionary$name2015
rename2017 <- eas_dictionary$name2017

names(rename2014) <- eas_dictionary$true_name
names(rename2015) <- eas_dictionary$true_name
names(rename2017) <- eas_dictionary$true_name

eas_14 %<>% rename(all_of(rename2014))
eas_15 %<>% rename(all_of(rename2015))
eas_17 %<>% rename(all_of(rename2017))

eas_dictionary是一个包含数据字典的小标题,但这没关系。)

关键是我想在向量上使用上述代码自动化,years <- c("2014", "2015", "2017")所以我没有重复的代码。

我尝试像

for (i in seq_along(years)){
  rename[i] <- glue::glue('eas_dictionary$name', '{i}')
}

for (i in seq_along(years)){
  assign(glue('rename{i}') <- glue('eas_dictionary$name{i}'))
}

但是这些都抛出错误。我只是没有掌握阳光税的窍门

标签: rdplyriterationpurrrr-glue

解决方案


您可以尝试使用lapply

years <- c("2014", "2015", "2017")
lapply(eas_dictionary[paste0('name', years)], function(x) 
       setNames(x, eas_dictionary$true_name)) -> result

result

不建议在环境中创建多个单独的对象,但如果由于某种原因需要创建它们,您可以使用list2env.

list2env(result, .GlobalEnv)

推荐阅读