包含数据表的列表-无法使用函数来重命名列?

时间:2018-10-14 20:17:49

标签: r function dataframe lapply

我每年有20个excel文件,其中包含城市级别的数据。我将它们导入列表中,因为我认为遍历它们会更容易。 我要做的第一项任务是更改每个文件第二列的名称。 如果是,对于单个文件,我可以这样做:

#data is a list of data tables/frames. Example:
data<-list(a = data.frame(1:2,3:4),b = data.frame(5:8,15:18) )

#renaming first column of a (works)
names(data[[1]])[2]<-"ABC"

我能够重命名该列。 为了进行批量编辑,我想编写一个在lapply中使用的函数。该函数应该是上述内容的简单版本:

 rename <-function(df){
  names(df)[2]<-"XYZ"}

重命名(data [[1]])对第二列没有任何作用。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您需要在每次迭代时返回完整的修改对象:

data <- lapply( data, function(x) {names(x)[2]<-"ABC"; x})
data
#---------
[[1]]
  X1.2 ABC
1    1   3
2    2   4

[[2]]
  X5.8 ABC
1    5  15
2    6  16
3    7  17
4    8  18

我确定这是重复的,但我不知道正确的搜索词可能是什么,所以我只是在回答它....