根据字符向量分配一组向量(自动化代码)
Posted
技术标签:
【中文标题】根据字符向量分配一组向量(自动化代码)【英文标题】:Assign a set of vectors based on on a character vector (automating code)【发布时间】:2021-08-01 09:14:31
【问题描述】:
我想做一系列的作业
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('renamei') <- glue('eas_dictionary$namei'))
但是这些都会抛出错误。我只是没有掌握 suntax 的窍门
【问题讨论】:
【参考方案1】:
您可以尝试使用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)
【讨论】:
谢谢。 @dash2 还指出“任何时候你想批量分配变量名,都可以使用列表”。以上是关于根据字符向量分配一组向量(自动化代码)的主要内容,如果未能解决你的问题,请参考以下文章