r语言 - 如何在 tidyverse setNames() 中索引 tibble



我想在 tibble 中获取一个单元格的值,并在重命名列时使用它。

例如,假设在mtcars数据帧中,我想将mpg列第一行中的值连接到disp列的列名。

我最初的想法是这样的:

mtcars %>% 
select(mpg, cyl, disp) %>% 
setNames(c('miles', 'cylinders', paste0('disp_', mpg[1])))

但是,这行不通。有什么帮助吗?

通常,您只能从具有某些dplyr动词(如mutatesummarizegroup_by等(的数据框中推断列(或者如果您使用with关键字(。setNames是此列表中没有的基本 R 函数,因此需要显式指定mpg来自的数据框;由于使用的是管道%>%,因此可以使用.$mpg来引用列:

mtcars %>% 
select(mpg, cyl, disp) %>% 
setNames(c('miles', 'cylinders', paste0('disp_', .$mpg[1])))
#                    miles cylinders disp_21
#Mazda RX4            21.0         6   160.0
# ...

最新更新