行番号(名前)をデータフレームに追加する

これまではtibble::rowid_to_column()を利用してきたが、この処理をもう少し早くする必要が出てきてしらべていたら、dplyr::add_rownames()の存在を知り、速度比較したらあやかったので今後はこれを使うことにする。

library(tidyverse)
library(microbenchmark)
library(data.table)


iris_df <- iris %>% as.data.table()

microbenchmark(iris %>% add_rownames(),
               iris %>% rownames_to_column(),
               iris_df %>% add_rownames(),
               iris %>% mutate(id = seq.int(nrow(.))))
Unit: milliseconds
                                   expr      min       lq     mean   median       uq      max neval cld
                iris %>% add_rownames() 1.218453 1.262064 1.416237 1.310582 1.368730 4.750718   100 a  
          iris %>% rownames_to_column() 2.834875 2.919264 3.122361 2.996101 3.133352 5.571955   100   c
             iris_df %>% add_rownames() 1.384211 1.447833 1.556418 1.512777 1.599620 2.527902   100 a  
 iris %>% mutate(id = seq.int(nrow(.))) 2.348928 2.415761 2.593333 2.479005 2.568303 5.112818   100  b 

追記: dplyr::add_rownames()はduplicatedとなっており、代わりにtibble::rownames_to_column()を利用せよというwarningが出てくる。 少し遅いがtibbleの関数を利用するほうが無難という結論。