我经常使用tibles,对它们很满意。唯一困扰我的问题是,每次我想查看超过10行时,必须不断添加print(n = ...)
。我知道我可以使用as.data.frame()
将它们转换为 Dataframe ,但我更喜欢为所有tibles设置一个全局打印选项,例如print(n=100)
,直到我决定更改它。
到目前为止,我一直在做的是
使用print(n=....)
library(dplyr)
mtcars %>%
as_tibble() %>%
print(n=20)
字符串
或使用as.data.frame()
mtcars %>%
as_tibble() %>%
as.data.frame()
型
或使用自定义函数(类似于data.table功能)
tar_head_tail <- function(data, nh = 15, nt = 15) {
library(dplyr)
library(crayon)
x <- data %>%
as.data.frame() %>%
tibble::rownames_to_column("row_number") %>%
head(n = nh)
y <- data %>%
as.data.frame() %>%
tibble::rownames_to_column("row_number") %>%
tail(n = nt)
head_tail <- bind_rows(x, y) %>%
tibble::column_to_rownames("row_number")
# Apply color
cat(green("Head:\n"))
print(x)
cat(red("\nTail:\n"))
print(y)
return(invisible(head_tail))
}
iris %>%
tar_head_tail()
型
我们如何为所有的tibles设置一个全局打印(比如print(n=20))选项,直到我们决定改变它?
更新:我的期望:
当我这样做时:
mtcars %>%
as_tibble()
型
设置全局打印后应显示(n=20):
# A tibble: 32 × 11
mpg cyl disp hp drat wt qsec vs am gear carb
<dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 21 6 160 110 3.9 2.62 16.5 0 1 4 4
2 21 6 160 110 3.9 2.88 17.0 0 1 4 4
3 22.8 4 108 93 3.85 2.32 18.6 1 1 4 1
4 21.4 6 258 110 3.08 3.22 19.4 1 0 3 1
5 18.7 8 360 175 3.15 3.44 17.0 0 0 3 2
6 18.1 6 225 105 2.76 3.46 20.2 1 0 3 1
7 14.3 8 360 245 3.21 3.57 15.8 0 0 3 4
8 24.4 4 147. 62 3.69 3.19 20 1 0 4 2
9 22.8 4 141. 95 3.92 3.15 22.9 1 0 4 2
10 19.2 6 168. 123 3.92 3.44 18.3 1 0 4 4
11 17.8 6 168. 123 3.92 3.44 18.9 1 0 4 4
12 16.4 8 276. 180 3.07 4.07 17.4 0 0 3 3
13 17.3 8 276. 180 3.07 3.73 17.6 0 0 3 3
14 15.2 8 276. 180 3.07 3.78 18 0 0 3 3
15 10.4 8 472 205 2.93 5.25 18.0 0 0 3 4
16 10.4 8 460 215 3 5.42 17.8 0 0 3 4
17 14.7 8 440 230 3.23 5.34 17.4 0 0 3 4
18 32.4 4 78.7 66 4.08 2.2 19.5 1 1 4 1
19 30.4 4 75.7 52 4.93 1.62 18.5 1 1 4 2
20 33.9 4 71.1 65 4.22 1.84 19.9 1 1 4 1
# ℹ 12 more rows
型
我想避免print(n=....)
或print()
等附加行。
1条答案
按热度按时间enxuqcxy1#
dplyr
和其他tidyverse
包导入pillar
来格式化打印输出。文档列出了各种options来控制如何打印tibles。对于行:
pillar.print_max
:打印的最大行数,默认为20
。设置为Inf
将始终打印所有行。pillar.print_min
:如果表中有超过print_max
行,则打印的行数,默认值为10。字符串