为什么我没有在 R 中获得已定义标题的重命名列?

why I do not get the renamed column in R with title defined?

我正在尝试创建一个将参数定义到本地环境中的函数,我希望能在短时间内使用它。

这里是一个可重现的例子,还没有创建函数:

tibble <- structure(list(standardised_existing_cond_rate = 1.44), row.names = c(NA, 
-1L), class = c("tbl_df", "tbl", "data.frame"))

我正在定义我的标题,这个例子在我使用粘贴功能将它们添加在一起时似乎不是问题:

comorbidity <- "asthma"
title <- "Standardised"

add_to_title <- comorbidity
add_last_word <- " rate in"
country = "India"
country = country

whole_title <- paste(title, add_to_title, add_last_word, country)

whole_title

但是,当我用整个标题重命名我的列名称时,我没有成功。

table <- tibble %>% rename(whole_title = standardised_existing_cond_rate)

table

很明显,我正在尝试做一些奇怪的事情。然而,我希望我能找到另一个更优雅的解决方案,以解决如何使用标题重命名我的列名。但重要的是保持整个标题名称不变,因为它们将作为定义了参数的函数传入。

使用 !!:= 计算 whole_title :

library(dplyr)
tibble %>% rename(!!whole_title := standardised_existing_cond_rate)

#  `Standardised asthma  rate in India`
#                                 <dbl>
#1                                 1.44

还有更简单的方法,无需进入 non-standard 评估。例如 setNames

setNames(tibble, whole_title)

我们可以使用rename_at

library(dplyr)
tibble %>% 
     rename_at(vars(standardised_existing_cond_rate), ~ whole_title)

-输出

# A tibble: 1 x 1
#  `Standardised asthma  rate in India`
#                                 <dbl>
#1                                 1.44

或使用rename_with

tibble %>% 
          rename_with(~ whole_title, standardised_existing_cond_rate)
# A tibble: 1 x 1
#  `Standardised asthma  rate in India`
#                                 <dbl>
#1                                 1.44