r - 根据字符向量分配一组向量(自动化代码)
问题描述
我想做一系列的作业
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}'))
}
但是这些都抛出错误。我只是没有掌握阳光税的窍门
解决方案
您可以尝试使用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)
推荐阅读
- android - 带有多行文本描述的 Android TabLayout
- c# - 为什么我的 c# 项目的 bin/Debug 目录中有来自“C:\Program Files\IIS\Microsoft Web Deplay V3”的文件?
- algorithm - 测试 2 个字符串 75%+ 相似度的最快算法?
- python - 如何让我的班级(继承 dict)允许双重查找?(类型错误)
- python - 异步计时器函数在调用两次时会自行阻塞
- python - 从 sqlalchemy 插入数据后,如何在 MySQL 上创建 UUID 触发器?
- python - 我收到此错误 AttributeError: 'builtin_function_or_method' object has no attribute 'title'
- python - 无法让 Python 文件在 cmd 中打开
- mysql - 行构造函数比较
- ios - watchOS 7 beta 网络出现 SSL 错误