【发布时间】:2019-08-03 16:45:45
【问题描述】:
我有几个小标题,每个小标题都有不同的列数和不同的列名。我想将每个列的名称标准化为全部小写。这适用于单个小标题:
library(magrittr)
library(purrr)
colnames(tbl1) %<>% map(tolower)
对象 tbl1 的列名现在都是小写的。
但是,如果我将所有小玩意都放在一个列表中,这将不起作用:
all_tbls <- list(tbl1, tbl2, tbl3)
all_tbls %<>% map(function(tbl) {colnames(tbl) %<>% map(tolower)})
对象 tbl1、tbl2 和 tbl3 的列名不会因此而改变。列表 all_tbls 中的对象现在是每个 tbl 的列名列表,即如果您将 as.list() 应用于 colnames()) 的结果,您会得到什么。
为什么会这样?有没有更好的方法来做到这一点?为了与其他代码保持一致,我更喜欢使用 tidyverse 函数(例如 map 而不是 *apply),但我对其他解决方案持开放态度。编辑:明确地说,我希望能够使用原始 tibble 对象,即期望的结果是 tbl1、tbl2 和 tbl3 的 colnames 发生变化。
我查看但没有发现启发性的其他问答包括:
【问题讨论】: