打印漂亮的数据。frames/tables 到控制台
Print pretty data.frames/tables to console
有没有办法以更易读的方式将小 data.frames
打印到控制台?
比如是否可以向控制台输出:
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
作为
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 |
+--------------+-------------+--------------+-------------+---------+
我意识到大 data.frames
会占用不必要的时间,但如果可以的话,我希望能够以更有条理的方式查看小框架。
特别是,当我有两个彼此相邻的文本字段时,在两个字段之间用管道将它们分开会容易得多,因为单词之间的间距与列之间的间距大小相同。
谢谢
您可以尝试几种方法。
为您的 .Rprofile
添加几个辅助函数。在我的个人资料中,我有
hh = function(d)
if(class(d)=="matrix"|class(d)=="data.frame") d[1:5,1:5]
此函数打印数据框的左上角。我也有
ht = function(d, n=6) rbind(head(d, n), tail(d,n))
为数据框创建您自己的 S3
打印函数,例如
print.data.frame = function(x, ..., digits = NULL,
quote = FALSE, right = TRUE,
row.names = TRUE)
message("hi")
使用包,例如dplyr
。但是,如果您只想要漂亮的打印效果,这就有点矫枉过正了。
如果它对任何人有帮助,我只是偶然发现 knitr
的 kable
实现了漂亮的打印效果。结合上面的一些.Rprofile
建议,这似乎实现了我的想法。
> 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 |
我最近遇到了同样的问题,遇到了 huxtable
包。它非常灵活,可能只是为了更好的控制台输出而有点矫枉过正,但它对我来说非常有用。
以下是使用 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)
我认为所有的功能都是不言而喻的。有关详细介绍,请参阅 https://hughjonesd.github.io/huxtable/huxtable.html#adding-row-and-column-names.
print_screen(iris_hux)
产生此输出(在控制台中!):
我还没有想出如何隐藏列名称的底部信息。所以如果有人知道,请评论!
编辑: 为了抑制底部的列名,在 print_screen()
.
中使用 colnames = FALSE
如果您也愿意将输出打印到 (RStudio) 查看器窗格而不是控制台,我建议您使用 DT
包。
library(DT)
datatable(iris)
我认为这有几个优点:输出很漂亮 well-arranged,该包能够显示大数据帧而不会变得笨重,并且可以高度自定义启动。
tibbles 在控制台中以彩色格式打印:
library(tidyverse)
x <- as_tibble(mtcars)
x
有没有办法以更易读的方式将小 data.frames
打印到控制台?
比如是否可以向控制台输出:
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
作为
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 |
+--------------+-------------+--------------+-------------+---------+
我意识到大 data.frames
会占用不必要的时间,但如果可以的话,我希望能够以更有条理的方式查看小框架。
特别是,当我有两个彼此相邻的文本字段时,在两个字段之间用管道将它们分开会容易得多,因为单词之间的间距与列之间的间距大小相同。
谢谢
您可以尝试几种方法。
为您的
.Rprofile
添加几个辅助函数。在我的个人资料中,我有hh = function(d) if(class(d)=="matrix"|class(d)=="data.frame") d[1:5,1:5]
此函数打印数据框的左上角。我也有
ht = function(d, n=6) rbind(head(d, n), tail(d,n))
为数据框创建您自己的
S3
打印函数,例如print.data.frame = function(x, ..., digits = NULL, quote = FALSE, right = TRUE, row.names = TRUE) message("hi")
使用包,例如
dplyr
。但是,如果您只想要漂亮的打印效果,这就有点矫枉过正了。
如果它对任何人有帮助,我只是偶然发现 knitr
的 kable
实现了漂亮的打印效果。结合上面的一些.Rprofile
建议,这似乎实现了我的想法。
> 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 |
我最近遇到了同样的问题,遇到了 huxtable
包。它非常灵活,可能只是为了更好的控制台输出而有点矫枉过正,但它对我来说非常有用。
以下是使用 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)
我认为所有的功能都是不言而喻的。有关详细介绍,请参阅 https://hughjonesd.github.io/huxtable/huxtable.html#adding-row-and-column-names.
print_screen(iris_hux)
产生此输出(在控制台中!):
我还没有想出如何隐藏列名称的底部信息。所以如果有人知道,请评论!
编辑: 为了抑制底部的列名,在 print_screen()
.
colnames = FALSE
如果您也愿意将输出打印到 (RStudio) 查看器窗格而不是控制台,我建议您使用 DT
包。
library(DT)
datatable(iris)
我认为这有几个优点:输出很漂亮 well-arranged,该包能够显示大数据帧而不会变得笨重,并且可以高度自定义启动。
tibbles 在控制台中以彩色格式打印:
library(tidyverse)
x <- as_tibble(mtcars)
x