为什么基本的R`print()`函数需要一个tibble?

问题描述 投票:0回答:1

为什么基本的R的 "print() "函数需要一个tibble?print() 函数时需要一个tibble。n = X 争论?从下面的例子来看,这似乎是真的。

这不适用

library(tidyverse)
mtcars %>% print(n = 20)
#> Error in print.default(m, ..., quote = quote, right = right, max = max) : 
#>   invalid 'na.print' specification

这确实有效

mtcars %>% as_tibble() %>% print(n = 20)
#> # A tibble: 32 x 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
#> # ... with 12 more rows
r dplyr tibble
1个回答
3
投票

你的第一个例子相当于 print(mtcars, n=20) -- 这也是失败的。

因为 mtcars 是一个 data.frame 您的电话调度 print.data.frame. 而作为 args(print.data.frame) 会告诉你,没有 n= 争论在其中。

简而言之,你混淆了 特定 派遣 print.tbl)的通用方法。

所以这个问题的更好标题可能是 "为什么只有tibbles的print方法有n个参数"--对于一般用途,我们通常只需调用 head 如同

R> head(mtcars)
                   mpg cyl disp  hp drat    wt  qsec vs am gear carb
Mazda RX4         21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
Mazda RX4 Wag     21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
Datsun 710        22.8   4  108  93 3.85 2.320 18.61  1  1    4    1
Hornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44  1  0    3    1
Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2
Valiant           18.1   6  225 105 2.76 3.460 20.22  1  0    3    1
R> 

当然,这在管道式表达中也是可行的。

© www.soinside.com 2019 - 2024. All rights reserved.