Is there a way to print small data.frames
to the console in a more readable manner?
For example, would it be possible to output to the console:
library(MASS) iris[1:5, ] 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 4 4.6 3.1 1.5 0.2 setosa 5 5.0 3.6 1.4 0.2 setosa
as
iris[1:5, ] +--------------+-------------+--------------+-------------+---------+ | 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 | 4 | 4.6 | 3.1 | 1.5 | 0.2 | setosa | 5 | 5.0 | 3.6 | 1.4 | 0.2 | setosa | +--------------+-------------+--------------+-------------+---------+
I realise for large data.frames
it would take up an unnecessary amount of time, but if it's an option, I would like to be able to look at small frames in a more structured manner.
In particular, when I have two text fields next to each other, it would be much easier with a pipe between the two fields to separate them, as the spacing between words is the same size as the spacing between columns.
Thanks
You can pretty print pandas dataframe using pd. set_option('display. max_columns', None) statement. Usecase: Your dataframe may contain many columns and when you print it normally, you'll only see few columns.
To show the full data without any hiding, you can use pd. set_option('display. max_rows', 500) and pd. set_option('display.
In case it helps anyone, I just stumbled across the fact that knitr
's kable
achieves a nice pretty print. Combine with some of the .Rprofile
suggestions above, this seems to achieve what I had in mind.
> knitr::kable(head(iris)) | Sepal.Length| Sepal.Width| Petal.Length| Petal.Width|Species | |------------:|-----------:|------------:|-----------:|:-------| | 5.1| 3.5| 1.4| 0.2|setosa | | 4.9| 3.0| 1.4| 0.2|setosa | | 4.7| 3.2| 1.3| 0.2|setosa | | 4.6| 3.1| 1.5| 0.2|setosa | | 5.0| 3.6| 1.4| 0.2|setosa | | 5.4| 3.9| 1.7| 0.4|setosa |
I had the same problem recently and came across the huxtable
package. It is very flexible and maybe a litte overkill for just nicer console output, but it served me very well.
Here is how you could solve your problem using huxtable
:
library(huxtable) library(magrittr) small_iris <- iris[1:5, ] iris_hux <- hux(small_iris) %>% add_colnames() %>% set_bold(row = 1, col = everywhere, value = TRUE) %>% set_all_borders(TRUE)
I think all functions speak for themselves. For a thorough introduction, see https://hughjonesd.github.io/huxtable/huxtable.html#adding-row-and-column-names.
print_screen(iris_hux)
yield this output (in the console!):
I have not figured out yet how to suppress the bottom information on the column names. So if someone knows, please comment!
EDIT: In order to suppress the column names at the bottom, use colnames = FALSE
inside print_screen()
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With