# Little useless-useful R functions – Transforming dataframe to markdown table

**R – TomazTsql**, and kindly contributed to R-bloggers]. (You can report issue about the content on this page here)

Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.

Writing markdown documents outside RStudio (using the usual set of packages) has benefits and struggles. Huge struggle is transforming dataframe results into markdown table, using hypens and pipes. Ugghhh…

This useless functions takes R dataframe as input and prints out dataframe wrapped in markdown table.

iris[1:3,1:5] # Result: #> Sepal.Length Sepal.Width Petal.Length Petal.Width Species #> 1 5.1 3.5 1.4 0.2 setosa #> 2 4.9 3.0 1.4 0.2 setosa #> 3 4.7 3.2 1.3 0.2 setosa

And if we want this result in Markdown, it should look like:

|Sepal.Length|Sepal.Width|Petal.Length|Petal.Width|Species| |---|---|---|---|---| |5.1|3.5|1.4|0.2|setosa| |4.9|3|1.4|0.2|setosa| |4.7|3.2|1.3|0.2|setosa|

This can be directly used in any editor. (Sidenote: if you decide to use Latex, same function can be created, just different ASCII chars needs to be used – ampersend and backslash).

The super lazy function

df_2_MD <- function(your_df){ cn <- as.character(names(your_df)) headr <- paste0(c("", cn), sep = "|", collapse='') sepr <- paste0(c('|', rep(paste0(c(rep('-',3), "|"), collapse=''),length(cn))), collapse ='') st <- "|" for (i in 1:nrow(your_df)){ for(j in 1:ncol(your_df)){ if (j%%ncol(your_df) == 0) { st <- paste0(st, as.character(your_df[i,j]), "|", "\n", "" , "|", collapse = '') } else { st <- paste0(st, as.character(your_df[i,j]), "|", collapse = '') } } } fin <- paste0(c(headr, sepr, substr(st,1,nchar(st)-1)), collapse="\n") cat(fin) } # run function short_iris <- iris[1:3,1:5] df_2_MD(short_iris)

As always, code is available on Github in Useless_R_function repository. The sample file in this repository is here (filename: *Dataframe_to_markdown.R*) Check the repository for future updates.

Happy R-coding and stay healthy!

**leave a comment**for the author, please follow the link and comment on their blog:

**R – TomazTsql**.

R-bloggers.com offers

**daily e-mail updates**about R news and tutorials about learning R and many other topics. Click here if you're looking to post or find an R/data-science job.

Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.