我有一个列表,其中包含多个具有相同结构的数据框,我想要更改所有数据框的列名。
我尝试过使用dplyr
包中的rename选项以及使用map将其应用于列表中的每个数据框。
以下是一些代码:
#Generating some data to exemplify the situation
foo = list(testA = as.data.frame(matrix(rnorm(25),ncol = 5)),
testB = as.data.frame(matrix(rnorm(25),ncol = 5)),
testC = as.data.frame(matrix(rnorm(25),ncol = 5)))
#New name for data frame columns
newNames = c('Jan','Feb','Mar','Apr','May')
# Packages
library(dplyr)
library(purrr)
首先,我尝试使用dplyr
中的rename_all
命令,希望该命令能够自动将每一列与我的newNames
向量中的名称(从第一个到最后一个)进行匹配,但这并没有起作用。
foo <- foo %>% rename_all(meses)
接下来,我尝试创建一个名为renameColumn
的简单函数:
renameColumn = function(myData, new_names){
colnames(data) = new_names
}
并且在map
函数内使用该函数。这种方法也没有生效。
map(.x = foo,
.f = renameColumn(myData = foo, new_names = newNames))
如何使用preferably dplyr和map来实现将所有数据框列名命名为newNames向量的最终目标?