Is it possible to change the settings in data.table so the default is to print only 10 rows and only the columns that fit the screen? Like a tibble df does.
I usually work on a laptop and would like to avoid the output in the example below. Many thanks!
library(data.table)
dt_table <- as.data.table(mtcars)
dt_table
Output:
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
EDIT:
I found a partial solution:
options(datatable.print.nrows=5,
datatable.print.trunc.cols = T)
Which works for me. I anyone knows how to control how many n top / bottom rows separately? The option above will print 5 top / 5 bottom rows -- what if I want top 10, bottom 2? Is that possible?
CodePudding user response:
Starting with:
> 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
We can get most of the way there with:
> 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>, ...]
I don't know of a way to not show the bottom so-many-rows. That aside, fortunately we can set those as options, either per-session (as below on the R repl prompt) or in a .Rprofile
file for persistent use.
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>, ...]
which is pretty close.
CodePudding user response:
We may use tidytable
tidytable::as_tidytable(dt_table)
-output
# 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
which would also keep the 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>