【问题标题】:List containing data tables - Unable to use a function to rename columns?包含数据表的列表 - 无法使用函数重命名列?
【发布时间】:2018-10-14 20:17:49
【问题描述】:

我有 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"}

Rename(data[[1]]) 但是,对第二列没有任何作用。任何想法为什么?

【问题讨论】:

  • 欢迎来到 SO。这个问题是不可重现的。请尝试创建一个小而完整的代表性示例,否则问题很可能会被关闭。这个stackoverflow.com/questions/5963269/… 可以帮助你做到这一点。该链接位于 SO R 常见问题解答stackoverflow.com/tags/r/info 中,所有新发帖者都应在发布前阅读该链接。
  • 那些不是 data.tables。它们是数据框。
  • 是的,我编辑了这个问题,对不起...但是如果你创建一个随机数据框也是一样的。

标签: r function dataframe lapply


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2022-11-16
    • 2021-11-01
    • 2013-06-09
    • 2020-11-04
    • 1970-01-01
    • 2016-11-02
    • 1970-01-01
    • 2018-01-04
    • 2017-12-28
    相关资源
    最近更新 更多