Closed
Description
Currently, as_tibble.matrix()
throws away rownames:
library(tibble)
mtmatrix <- as.matrix(mtcars)
rownames(mtmatrix)
#> [1] "Mazda RX4" "Mazda RX4 Wag" "Datsun 710"
#> [4] "Hornet 4 Drive" "Hornet Sportabout" "Valiant"
#> [7] "Duster 360" "Merc 240D" "Merc 230"
#> [10] "Merc 280" "Merc 280C" "Merc 450SE"
#> [13] "Merc 450SL" "Merc 450SLC" "Cadillac Fleetwood"
#> [16] "Lincoln Continental" "Chrysler Imperial" "Fiat 128"
#> [19] "Honda Civic" "Toyota Corolla" "Toyota Corona"
#> [22] "Dodge Challenger" "AMC Javelin" "Camaro Z28"
#> [25] "Pontiac Firebird" "Fiat X1-9" "Porsche 914-2"
#> [28] "Lotus Europa" "Ford Pantera L" "Ferrari Dino"
#> [31] "Maserati Bora" "Volvo 142E"
rownames(as_tibble(mtmatrix))
#> [1] "1" "2" "3" "4" "5" "6" "7" "8" "9" "10" "11" "12" "13" "14"
#> [15] "15" "16" "17" "18" "19" "20" "21" "22" "23" "24" "25" "26" "27" "28"
#> [29] "29" "30" "31" "32"
This is inconsistent with as_tibble.data.frame
, which makes sure to keep rownames
all.equal(
rownames(mtcars),
rownames(as_tibble(mtcars))
)
#> [1] TRUE
If a user has a rownamed matrix and wants a tibble with those rownames in it (e.g. confusion matrices from the randomForest
package), they have to convert to a base data.frame first
mtmatrix %>%
as.data.frame() %>%
as_tibble() %>%
rownames_to_column("rname")
Fixing this bug would remove the need for the as.data.frame()
call, and make the steps match those for doing the same with a data.frame, e.g.
mtcars %>%
as_tibble() %>%
rownames_to_column("rname")
This only saves one step, but standardizing the tibble interface across matrices and data.frames where possible seems like a worthy UX improvement.
Session Info
Used newest github version to make sure this wasn't fixed already
devtools::session_info("tibble")
#> Session info --------------------------------------------------------------
#> setting value
#> version R version 3.4.1 (2017-06-30)
#> system x86_64, linux-gnu
#> ui X11
#> language (EN)
#> collate en_US.UTF-8
#> tz America/New_York
#> date 2017-08-02
#> Packages ------------------------------------------------------------------
#> package * version date source
#> Rcpp 0.12.12 2017-07-15 cran (@0.12.12)
#> rlang 0.1.1 2017-05-18 CRAN (R 3.4.0)
#> tibble * 1.3.3.9001 2017-08-02 Github (tidyverse/tibble@12767ae)
Metadata
Metadata
Assignees
Labels
No labels