根据字符向量分配一组向量(自动化代码)

Assign a set of vectors based on on a character vector (automating code)

我想做一系列作业

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是一个包含数据字典的tibble,但这并不重要。)

关键是我想在矢量上使用自动化上述代码 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}'))
}

但是这些都会抛出错误。我只是不太了解 suntax

您可以尝试使用 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)