根据字符向量分配一组向量(自动化代码)
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)
我想做一系列作业
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)