I was faced with the same problem and tried all the above-mentioned solutions and realized that none of them actually preserve the names of the columns.
Here is, in my opinion, a better way to do the same:
# attaching needed libraries
library(dplyr)
library(data.table)
library(tibble)
# defining the dataframe
df <- cbind.data.frame(x = rnorm(10), y = rnorm(10))
# custom function to transpose while preserving names
transpose_df <- function(df) {
t_df <- data.table::transpose(df)
colnames(t_df) <- rownames(df)
rownames(t_df) <- colnames(df)
t_df <- t_df %>%
tibble::rownames_to_column(.data = .) %>%
tibble::as_tibble(.)
return(t_df)
}
# using the function
transpose_df(df)
#> # A tibble: 2 x 11
#> rowname `1` `2` `3` `4` `5` `6` `7` `8` `9`
#> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#> 1 x -1.38 0.752 1.22 0.296 -0.00298 1.50 -0.719 -0.503 -0.114
#> 2 y 0.618 0.304 -0.0559 -1.27 0.0806 0.156 0.522 0.677 0.532
#> # ... with 1 more variable: `10` <dbl>
Created on 2018-02-17 by the reprex package (v0.2.0).
as_tibble(cbind(nms = names(df), t(df)))
– Aridsapply(df[,2:length(df)],as.numeric)
I think this fixed it – Cymricsapply(df[,2:length(df)],as.numeric)
did not work. – Cymric%>% mutate_at(2:nrow(df), as.numeric)
– Ourselves