可以使 data.table 输出看起来更像 tibble 输出吗? (10 行,只打印适合屏幕的列)
Can data.table output be made to look more like tibble output? (10 rows, print only columns that fit screen)
是否可以更改 data.table 中的设置,以便默认仅打印 10 行和适合屏幕的列?就像 tibble df 一样。
我通常在笔记本电脑上工作,希望避免出现下面示例中的输出。
非常感谢!
library(data.table)
dt_table <- as.data.table(mtcars)
dt_table
输出:
dt_table
mpg cyl disp hp drat wt qsec vs am gear
1: 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4
2: 21.0 6 160.0 110 3.90 2.875 17.02 0 1 4
3: 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4
4: 21.4 6 258.0 110 3.08 3.215 19.44 1 0 3
5: 18.7 8 360.0 175 3.15 3.440 17.02 0 0 3
6: 18.1 6 225.0 105 2.76 3.460 20.22 1 0 3
7: 14.3 8 360.0 245 3.21 3.570 15.84 0 0 3
8: 24.4 4 146.7 62 3.69 3.190 20.00 1 0 4
9: 22.8 4 140.8 95 3.92 3.150 22.90 1 0 4
10: 19.2 6 167.6 123 3.92 3.440 18.30 1 0 4
11: 17.8 6 167.6 123 3.92 3.440 18.90 1 0 4
12: 16.4 8 275.8 180 3.07 4.070 17.40 0 0 3
13: 17.3 8 275.8 180 3.07 3.730 17.60 0 0 3
14: 15.2 8 275.8 180 3.07 3.780 18.00 0 0 3
15: 10.4 8 472.0 205 2.93 5.250 17.98 0 0 3
16: 10.4 8 460.0 215 3.00 5.424 17.82 0 0 3
17: 14.7 8 440.0 230 3.23 5.345 17.42 0 0 3
18: 32.4 4 78.7 66 4.08 2.200 19.47 1 1 4
19: 30.4 4 75.7 52 4.93 1.615 18.52 1 1 4
20: 33.9 4 71.1 65 4.22 1.835 19.90 1 1 4
21: 21.5 4 120.1 97 3.70 2.465 20.01 1 0 3
22: 15.5 8 318.0 150 2.76 3.520 16.87 0 0 3
23: 15.2 8 304.0 150 3.15 3.435 17.30 0 0 3
24: 13.3 8 350.0 245 3.73 3.840 15.41 0 0 3
25: 19.2 8 400.0 175 3.08 3.845 17.05 0 0 3
26: 27.3 4 79.0 66 4.08 1.935 18.90 1 1 4
27: 26.0 4 120.3 91 4.43 2.140 16.70 0 1 5
28: 30.4 4 95.1 113 3.77 1.513 16.90 1 1 5
29: 15.8 8 351.0 264 4.22 3.170 14.50 0 1 5
30: 19.7 6 145.0 175 3.62 2.770 15.50 0 1 5
31: 15.0 8 301.0 335 3.54 3.570 14.60 0 1 5
32: 21.4 4 121.0 109 4.11 2.780 18.60 1 1 4
编辑:
我找到了部分解决方案:
options(datatable.print.nrows=5,
datatable.print.trunc.cols = T)
这对我有用。我有谁知道如何分别控制多少 n 个顶部/底部行?上面的选项将打印前 5 行/后 5 行——如果我想要前 10 行,后 2 行怎么办?这可能吗?
开始于:
> nycflights13::flights
# A tibble: 336,776 x 19
year month day dep_time sched_dep_time dep_delay arr_time sched_arr_time arr_delay
<int> <int> <int> <int> <int> <dbl> <int> <int> <dbl>
1 2013 1 1 517 515 2 830 819 11
2 2013 1 1 533 529 4 850 830 20
3 2013 1 1 542 540 2 923 850 33
4 2013 1 1 544 545 -1 1004 1022 -18
5 2013 1 1 554 600 -6 812 837 -25
6 2013 1 1 554 558 -4 740 728 12
7 2013 1 1 555 600 -5 913 854 19
8 2013 1 1 557 600 -3 709 723 -14
9 2013 1 1 557 600 -3 838 846 -8
10 2013 1 1 558 600 -2 753 745 8
# ... with 336,766 more rows, and 10 more variables: carrier <chr>, flight <int>,
# tailnum <chr>, origin <chr>, dest <chr>, air_time <dbl>, distance <dbl>, hour <dbl>,
# minute <dbl>, time_hour <dttm>
> as.data.table(nycflights13::flights)
year month day dep_time sched_dep_time dep_delay arr_time sched_arr_time
1: 2013 1 1 517 515 2 830 819
2: 2013 1 1 533 529 4 850 830
3: 2013 1 1 542 540 2 923 850
4: 2013 1 1 544 545 -1 1004 1022
5: 2013 1 1 554 600 -6 812 837
---
336772: 2013 9 30 NA 1455 NA NA 1634
336773: 2013 9 30 NA 2200 NA NA 2312
336774: 2013 9 30 NA 1210 NA NA 1330
336775: 2013 9 30 NA 1159 NA NA 1344
336776: 2013 9 30 NA 840 NA NA 1020
arr_delay carrier flight tailnum origin dest air_time distance hour minute
1: 11 UA 1545 N14228 EWR IAH 227 1400 5 15
2: 20 UA 1714 N24211 LGA IAH 227 1416 5 29
3: 33 AA 1141 N619AA JFK MIA 160 1089 5 40
4: -18 B6 725 N804JB JFK BQN 183 1576 5 45
5: -25 DL 461 N668DN LGA ATL 116 762 6 0
---
336772: NA 9E 3393 <NA> JFK DCA NA 213 14 55
336773: NA 9E 3525 <NA> LGA SYR NA 198 22 0
336774: NA MQ 3461 N535MQ LGA BNA NA 764 12 10
336775: NA MQ 3572 N511MQ LGA CLE NA 419 11 59
336776: NA MQ 3531 N839MQ LGA RDU NA 431 8 40
time_hour
1: 2013-01-01 05:00:00
2: 2013-01-01 05:00:00
3: 2013-01-01 05:00:00
4: 2013-01-01 05:00:00
5: 2013-01-01 06:00:00
---
336772: 2013-09-30 14:00:00
336773: 2013-09-30 22:00:00
336774: 2013-09-30 12:00:00
336775: 2013-09-30 11:00:00
336776: 2013-09-30 08:00:00
我们可以通过以下方式完成大部分工作:
> print(as.data.table(nycflights13::flights), nrows=5, topn=5, class=TRUE, trunc.cols=TRUE)
year month day dep_time sched_dep_time dep_delay arr_time
<int> <int> <int> <int> <int> <num> <int>
1: 2013 1 1 517 515 2 830
2: 2013 1 1 533 529 4 850
3: 2013 1 1 542 540 2 923
4: 2013 1 1 544 545 -1 1004
5: 2013 1 1 554 600 -6 812
---
336772: 2013 9 30 NA 1455 NA NA
336773: 2013 9 30 NA 2200 NA NA
336774: 2013 9 30 NA 1210 NA NA
336775: 2013 9 30 NA 1159 NA NA
336776: 2013 9 30 NA 840 NA NA
12 variables not shown: [sched_arr_time <int>, arr_delay <num>, carrier <char>, flight <int>, tailnum <char>, origin <char>, dest <char>, air_time <num>, distance <num>, hour <num>, ...]
我不知道如何不 显示底部 so-many-rows。除此之外,幸运的是,我们可以将这些设置为选项,per-session(如下面的 R repl 提示)或 .Rprofile
文件中以供持久使用。
options(datatable.print.nrows=5, datatable.print.topn=5, datatable.print.class=TRUE, datatable.print.trunc.cols=TRUE)
as.data.table(nycflights13::flights)
# year month day dep_time sched_dep_time dep_delay arr_time
# <int> <int> <int> <int> <int> <num> <int>
# 1: 2013 1 1 517 515 2 830
# 2: 2013 1 1 533 529 4 850
# 3: 2013 1 1 542 540 2 923
# 4: 2013 1 1 544 545 -1 1004
# 5: 2013 1 1 554 600 -6 812
# ---
# 336772: 2013 9 30 NA 1455 NA NA
# 336773: 2013 9 30 NA 2200 NA NA
# 336774: 2013 9 30 NA 1210 NA NA
# 336775: 2013 9 30 NA 1159 NA NA
# 336776: 2013 9 30 NA 840 NA NA
# 12 variables not shown: [sched_arr_time <int>, arr_delay <num>, carrier <char>, flight <int>, tailnum <char>, origin <char>, dest <char>, air_time <num>, distance <num>, hour <num>, ...]
非常接近。
我们可以使用tidytable
tidytable::as_tidytable(dt_table)
-输出
# A tidytable: 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
# … with 22 more rows
这也会保留 data.table
class
> str(tidytable::as_tidytable(dt_table) )
Classes ‘tidytable’, ‘data.table’ and 'data.frame': 32 obs. of 11 variables:
$ mpg : num 21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...
$ cyl : num 6 6 4 6 8 6 8 4 4 6 ...
$ disp: num 160 160 108 258 360 ...
$ hp : num 110 110 93 110 175 105 245 62 95 123 ...
$ drat: num 3.9 3.9 3.85 3.08 3.15 2.76 3.21 3.69 3.92 3.92 ...
$ wt : num 2.62 2.88 2.32 3.21 3.44 ...
$ qsec: num 16.5 17 18.6 19.4 17 ...
$ vs : num 0 0 1 1 0 1 0 1 1 1 ...
$ am : num 1 1 1 0 0 0 0 0 0 0 ...
$ gear: num 4 4 4 3 3 3 3 4 4 4 ...
$ carb: num 4 4 1 1 2 1 4 2 2 4 ...
- attr(*, ".internal.selfref")=<externalptr>
是否可以更改 data.table 中的设置,以便默认仅打印 10 行和适合屏幕的列?就像 tibble df 一样。
我通常在笔记本电脑上工作,希望避免出现下面示例中的输出。 非常感谢!
library(data.table)
dt_table <- as.data.table(mtcars)
dt_table
输出:
dt_table
mpg cyl disp hp drat wt qsec vs am gear
1: 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4
2: 21.0 6 160.0 110 3.90 2.875 17.02 0 1 4
3: 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4
4: 21.4 6 258.0 110 3.08 3.215 19.44 1 0 3
5: 18.7 8 360.0 175 3.15 3.440 17.02 0 0 3
6: 18.1 6 225.0 105 2.76 3.460 20.22 1 0 3
7: 14.3 8 360.0 245 3.21 3.570 15.84 0 0 3
8: 24.4 4 146.7 62 3.69 3.190 20.00 1 0 4
9: 22.8 4 140.8 95 3.92 3.150 22.90 1 0 4
10: 19.2 6 167.6 123 3.92 3.440 18.30 1 0 4
11: 17.8 6 167.6 123 3.92 3.440 18.90 1 0 4
12: 16.4 8 275.8 180 3.07 4.070 17.40 0 0 3
13: 17.3 8 275.8 180 3.07 3.730 17.60 0 0 3
14: 15.2 8 275.8 180 3.07 3.780 18.00 0 0 3
15: 10.4 8 472.0 205 2.93 5.250 17.98 0 0 3
16: 10.4 8 460.0 215 3.00 5.424 17.82 0 0 3
17: 14.7 8 440.0 230 3.23 5.345 17.42 0 0 3
18: 32.4 4 78.7 66 4.08 2.200 19.47 1 1 4
19: 30.4 4 75.7 52 4.93 1.615 18.52 1 1 4
20: 33.9 4 71.1 65 4.22 1.835 19.90 1 1 4
21: 21.5 4 120.1 97 3.70 2.465 20.01 1 0 3
22: 15.5 8 318.0 150 2.76 3.520 16.87 0 0 3
23: 15.2 8 304.0 150 3.15 3.435 17.30 0 0 3
24: 13.3 8 350.0 245 3.73 3.840 15.41 0 0 3
25: 19.2 8 400.0 175 3.08 3.845 17.05 0 0 3
26: 27.3 4 79.0 66 4.08 1.935 18.90 1 1 4
27: 26.0 4 120.3 91 4.43 2.140 16.70 0 1 5
28: 30.4 4 95.1 113 3.77 1.513 16.90 1 1 5
29: 15.8 8 351.0 264 4.22 3.170 14.50 0 1 5
30: 19.7 6 145.0 175 3.62 2.770 15.50 0 1 5
31: 15.0 8 301.0 335 3.54 3.570 14.60 0 1 5
32: 21.4 4 121.0 109 4.11 2.780 18.60 1 1 4
编辑:
我找到了部分解决方案:
options(datatable.print.nrows=5,
datatable.print.trunc.cols = T)
这对我有用。我有谁知道如何分别控制多少 n 个顶部/底部行?上面的选项将打印前 5 行/后 5 行——如果我想要前 10 行,后 2 行怎么办?这可能吗?
开始于:
> nycflights13::flights
# A tibble: 336,776 x 19
year month day dep_time sched_dep_time dep_delay arr_time sched_arr_time arr_delay
<int> <int> <int> <int> <int> <dbl> <int> <int> <dbl>
1 2013 1 1 517 515 2 830 819 11
2 2013 1 1 533 529 4 850 830 20
3 2013 1 1 542 540 2 923 850 33
4 2013 1 1 544 545 -1 1004 1022 -18
5 2013 1 1 554 600 -6 812 837 -25
6 2013 1 1 554 558 -4 740 728 12
7 2013 1 1 555 600 -5 913 854 19
8 2013 1 1 557 600 -3 709 723 -14
9 2013 1 1 557 600 -3 838 846 -8
10 2013 1 1 558 600 -2 753 745 8
# ... with 336,766 more rows, and 10 more variables: carrier <chr>, flight <int>,
# tailnum <chr>, origin <chr>, dest <chr>, air_time <dbl>, distance <dbl>, hour <dbl>,
# minute <dbl>, time_hour <dttm>
> as.data.table(nycflights13::flights)
year month day dep_time sched_dep_time dep_delay arr_time sched_arr_time
1: 2013 1 1 517 515 2 830 819
2: 2013 1 1 533 529 4 850 830
3: 2013 1 1 542 540 2 923 850
4: 2013 1 1 544 545 -1 1004 1022
5: 2013 1 1 554 600 -6 812 837
---
336772: 2013 9 30 NA 1455 NA NA 1634
336773: 2013 9 30 NA 2200 NA NA 2312
336774: 2013 9 30 NA 1210 NA NA 1330
336775: 2013 9 30 NA 1159 NA NA 1344
336776: 2013 9 30 NA 840 NA NA 1020
arr_delay carrier flight tailnum origin dest air_time distance hour minute
1: 11 UA 1545 N14228 EWR IAH 227 1400 5 15
2: 20 UA 1714 N24211 LGA IAH 227 1416 5 29
3: 33 AA 1141 N619AA JFK MIA 160 1089 5 40
4: -18 B6 725 N804JB JFK BQN 183 1576 5 45
5: -25 DL 461 N668DN LGA ATL 116 762 6 0
---
336772: NA 9E 3393 <NA> JFK DCA NA 213 14 55
336773: NA 9E 3525 <NA> LGA SYR NA 198 22 0
336774: NA MQ 3461 N535MQ LGA BNA NA 764 12 10
336775: NA MQ 3572 N511MQ LGA CLE NA 419 11 59
336776: NA MQ 3531 N839MQ LGA RDU NA 431 8 40
time_hour
1: 2013-01-01 05:00:00
2: 2013-01-01 05:00:00
3: 2013-01-01 05:00:00
4: 2013-01-01 05:00:00
5: 2013-01-01 06:00:00
---
336772: 2013-09-30 14:00:00
336773: 2013-09-30 22:00:00
336774: 2013-09-30 12:00:00
336775: 2013-09-30 11:00:00
336776: 2013-09-30 08:00:00
我们可以通过以下方式完成大部分工作:
> print(as.data.table(nycflights13::flights), nrows=5, topn=5, class=TRUE, trunc.cols=TRUE)
year month day dep_time sched_dep_time dep_delay arr_time
<int> <int> <int> <int> <int> <num> <int>
1: 2013 1 1 517 515 2 830
2: 2013 1 1 533 529 4 850
3: 2013 1 1 542 540 2 923
4: 2013 1 1 544 545 -1 1004
5: 2013 1 1 554 600 -6 812
---
336772: 2013 9 30 NA 1455 NA NA
336773: 2013 9 30 NA 2200 NA NA
336774: 2013 9 30 NA 1210 NA NA
336775: 2013 9 30 NA 1159 NA NA
336776: 2013 9 30 NA 840 NA NA
12 variables not shown: [sched_arr_time <int>, arr_delay <num>, carrier <char>, flight <int>, tailnum <char>, origin <char>, dest <char>, air_time <num>, distance <num>, hour <num>, ...]
我不知道如何不 显示底部 so-many-rows。除此之外,幸运的是,我们可以将这些设置为选项,per-session(如下面的 R repl 提示)或 .Rprofile
文件中以供持久使用。
options(datatable.print.nrows=5, datatable.print.topn=5, datatable.print.class=TRUE, datatable.print.trunc.cols=TRUE)
as.data.table(nycflights13::flights)
# year month day dep_time sched_dep_time dep_delay arr_time
# <int> <int> <int> <int> <int> <num> <int>
# 1: 2013 1 1 517 515 2 830
# 2: 2013 1 1 533 529 4 850
# 3: 2013 1 1 542 540 2 923
# 4: 2013 1 1 544 545 -1 1004
# 5: 2013 1 1 554 600 -6 812
# ---
# 336772: 2013 9 30 NA 1455 NA NA
# 336773: 2013 9 30 NA 2200 NA NA
# 336774: 2013 9 30 NA 1210 NA NA
# 336775: 2013 9 30 NA 1159 NA NA
# 336776: 2013 9 30 NA 840 NA NA
# 12 variables not shown: [sched_arr_time <int>, arr_delay <num>, carrier <char>, flight <int>, tailnum <char>, origin <char>, dest <char>, air_time <num>, distance <num>, hour <num>, ...]
非常接近。
我们可以使用tidytable
tidytable::as_tidytable(dt_table)
-输出
# A tidytable: 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
# … with 22 more rows
这也会保留 data.table
class
> str(tidytable::as_tidytable(dt_table) )
Classes ‘tidytable’, ‘data.table’ and 'data.frame': 32 obs. of 11 variables:
$ mpg : num 21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...
$ cyl : num 6 6 4 6 8 6 8 4 4 6 ...
$ disp: num 160 160 108 258 360 ...
$ hp : num 110 110 93 110 175 105 245 62 95 123 ...
$ drat: num 3.9 3.9 3.85 3.08 3.15 2.76 3.21 3.69 3.92 3.92 ...
$ wt : num 2.62 2.88 2.32 3.21 3.44 ...
$ qsec: num 16.5 17 18.6 19.4 17 ...
$ vs : num 0 0 1 1 0 1 0 1 1 1 ...
$ am : num 1 1 1 0 0 0 0 0 0 0 ...
$ gear: num 4 4 4 3 3 3 3 4 4 4 ...
$ carb: num 4 4 1 1 2 1 4 2 2 4 ...
- attr(*, ".internal.selfref")=<externalptr>