29

dplyr または magrittr チェーン内ですべての列名を上位または下位に設定することは可能ですか?

以下の例では、データをロードし、magrittr パイプを使用して、それを dplyr ミューテーションにチェーンします。4 行目ではtolowerfunction を使用していますが、これは別の目的のためです。小文字の観測値を使用して新しい変数を作成するためです。

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

私は明らかに次のようなものを探していますcolnames = tolowerが、これが機能しない/存在しないことを知っています。

dplyrrename関数に注意しますが、これはあまり役に立ちません。

magrittr の colname オプションは次のとおりです。

set_colnamesベースRのcolnames<-
set_names代わりに ベースRの代わりにnames<-

私はこれらで多数の順列を試しましたが、サイコロはありません。

明らかに、これは基数 r では非常に単純です。

names(mydata) <- tolower(names(mydata))

ただし、dplyr/magrittr コードのエレガントなチェーンに進む前に、不格好なワンライナーとしてそれを行う必要があるという /

4

5 に答える 5

25
iris %>% setNames(tolower(names(.))) %>% head

または、同等に非置換形式で置換関数を使用します。

iris %>% `names<-`(tolower(names(.))) %>% head
iris %>% `colnames<-`(tolower(names(.))) %>% head  # if you really want to use `colnames<-`
于 2015-03-25T18:48:52.620 に答える
22

magrittrの「複合割り当てパイプ演算子」を使用%<>%すると、質問を正しく理解できれば、さらに簡潔なオプションになる可能性があります。

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

?`%<>%` # for more
于 2015-03-25T20:02:03.383 に答える