【问题标题】:changing first colname in a list of dataframes更改数据框列表中的第一个 colname
【发布时间】:2014-10-21 16:45:35
【问题描述】:

我有一个数据框列表,我正在尝试使用 lapply 方法更改第一个 colname

frames<-lapply(frames,function(x){ colnames(frames[[x]])[1]<-"date"})

返回错误

Error in `*tmp*`[[x]] : invalid subscript type 'list'

我不确定为什么会产生这个错误,因为我的理解是这应该适用

colname[1]<-"date"

到列表中的每个数据框

如果有人能告诉我这个错误的根源,我将非常感激!

【问题讨论】:

    标签: r


    【解决方案1】:

    您不需要在lapply 中引用frames 列表。您的函数将x 视为列表中的一个元素frames。试试这个:

    frames &lt;- lapply(frames, function(x) { colnames(x)[1] &lt;- "date"; return(x) })

    【讨论】:

    • @RichardScriven 谢谢。修正了我的答案。
    • @RichardScriven 我喜欢明确:)
    • 好吧抱歉,我回滚了。 return 会减慢速度,所以除非必要,否则我不会真正使用它
    • @RichardScriven 哦,我不知道return 会降低代码性能。我可能不得不避免在我的代码中使用return...你知道它为什么会减慢速度吗? (对不起 - 题外话,但我很感兴趣)
    • 这里有一篇很好的关于 stackoverflow.com/questions/11738823/… 的文章。这真的只是个人喜好的问题
    猜你喜欢
    • 1970-01-01
    • 2019-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-15
    • 2020-04-15
    相关资源
    最近更新 更多