Dplyr或Magrittr - tolower?

RDJ*_*RDJ 17 r dplyr magrittr

是否可以在dplyr或magrittr链中将所有列名设置为高位或低位?

在下面的示例中,我加载数据,然后使用magrittr管道将其链接到我的dplyr突变.在第4行中我使用了tolower函数,但这是出于不同的目的:使用小写观察创建一个新变量.

mydata <- read.csv('myfile.csv') %>%
    mutate(Year = mdy_hms(DATE),
           Reference = (REFNUM),
           Event = tolower(EVENT)
Run Code Online (Sandbox Code Playgroud)

我显然正在寻找类似的东西,colnames = tolower但知道这不起作用/存在.

我注意到dplyr rename函数,但这不是很有用.

在magrittr中,colname选项是:

set_colnames而不是基础R colnames<-
set_names而不是基础R'names<-

我尝试了很多这些但没有骰子的排列.

显然,这在基础r中非常简单.

names(mydata) <- tolower(names(mydata))
Run Code Online (Sandbox Code Playgroud)

然而,在进入优雅的dplyr/magrittr代码链之前,与/哲学似乎不,你必须做一个笨重的单线程.

Moo*_*per 40

dplyr 现在允许这个:

mydata %>% rename_all(tolower)
Run Code Online (Sandbox Code Playgroud)


Bro*_*ieG 23

iris %>% setNames(tolower(names(.))) %>% head
Run Code Online (Sandbox Code Playgroud)

或者等效地使用非替换形式的替换功能:

iris %>% `names<-`(tolower(names(.))) %>% head
iris %>% `colnames<-`(tolower(names(.))) %>% head  # if you really want to use `colnames<-`
Run Code Online (Sandbox Code Playgroud)


小智 18

如果我正确理解你的问题,使用magrittr's"复合赋值管道操作符" %<>%可能是一个更简洁的选项.

library("magrittr")
names(iris) %<>% tolower

?`%<>%` # for more
Run Code Online (Sandbox Code Playgroud)