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

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 &lt;- 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 还指出“任何时候你想批量分配变量名,都可以使用列表”。

以上是关于根据字符向量分配一组向量(自动化代码)的主要内容,如果未能解决你的问题,请参考以下文章

代数小课堂:向量代数(通过向量夹角理解不同的维度)

聚合自动生成的特征向量

OpenCL:如何避免重复的标量/向量函数?

字符串、列表或其他东西的向量? C++

来自文本字符串或其他机制的代码类自动生成器

C++ Vector 实现分配新对象