为什么 as_tibble(mtcars,rownames = NA) 不显示行名称?文档说应该

J. *_*ini 1 r names tibble r-rownames

mtcars显然有行名称:

\n
> head(mtcars)\n                   mpg cyl disp  hp drat    wt  qsec vs am gear carb\nMazda RX4         21.0   6  160 110 3.90 2.620 16.46  0  1    4    4\nMazda RX4 Wag     21.0   6  160 110 3.90 2.875 17.02  0  1    4    4\nDatsun 710        22.8   4  108  93 3.85 2.320 18.61  1  1    4    1\nHornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44  1  0    3    1\nHornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2\nValiant           18.1   6  225 105 2.76 3.460 20.22  1  0    3    1\n
Run Code Online (Sandbox Code Playgroud)\n

的文档as_tibble告诉我,如果我设置,rownames = NA我将得到以下行为:NA: keep row names。我试过这个:

\n
> as_tibble(mtcars, rownames = NA)\n# A tibble: 32 x 11\n     mpg   cyl  disp    hp  drat    wt  qsec    vs    am  gear  carb\n * <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>\n 1  21       6  160    110  3.9   2.62  16.5     0     1     4     4\n 2  21       6  160    110  3.9   2.88  17.0     0     1     4     4\n 3  22.8     4  108     93  3.85  2.32  18.6     1     1     4     1\n 4  21.4     6  258    110  3.08  3.22  19.4     1     0     3     1\n 5  18.7     8  360    175  3.15  3.44  17.0     0     0     3     2\n 6  18.1     6  225    105  2.76  3.46  20.2     1     0     3     1\n 7  14.3     8  360    245  3.21  3.57  15.8     0     0     3     4\n 8  24.4     4  147.    62  3.69  3.19  20       1     0     4     2\n 9  22.8     4  141.    95  3.92  3.15  22.9     1     0     4     2\n10  19.2     6  168.   123  3.92  3.44  18.3     1     0     4     4\n# \xe2\x80\xa6 with 22 more rows\n
Run Code Online (Sandbox Code Playgroud)\n

显然,行名称无处可见。默认行为,即as_tibble(mtcars,rownames = NULL)(等效地, )产生相同的输出,但删除了上方和左侧的as_tibble(mtcars)星号。1<dbl>

\n

如果我使用 , 的第三个也是最后一个选项rownamesas_tibble(mtcars,rownames = "String here")我最终可以保留行名称:

\n
> as_tibble(mtcars,rownames = "String here")\n# A tibble: 32 x 12\n   `String here`       mpg   cyl  disp    hp  drat    wt  qsec    vs    am  gear  carb\n   <chr>             <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>\n 1 Mazda RX4          21       6  160    110  3.9   2.62  16.5     0     1     4     4\n 2 Mazda RX4 Wag      21       6  160    110  3.9   2.88  17.0     0     1     4     4\n 3 Datsun 710         22.8     4  108     93  3.85  2.32  18.6     1     1     4     1\n 4 Hornet 4 Drive     21.4     6  258    110  3.08  3.22  19.4     1     0     3     1\n 5 Hornet Sportabout  18.7     8  360    175  3.15  3.44  17.0     0     0     3     2\n 6 Valiant            18.1     6  225    105  2.76  3.46  20.2     1     0     3     1\n 7 Duster 360         14.3     8  360    245  3.21  3.57  15.8     0     0     3     4\n 8 Merc 240D          24.4     4  147.    62  3.69  3.19  20       1     0     4     2\n 9 Merc 230           22.8     4  141.    95  3.92  3.15  22.9     1     0     4     2\n10 Merc 280           19.2     6  168.   123  3.92  3.44  18.3     1     0     4     4\n# \xe2\x80\xa6 with 22 more rows\n
Run Code Online (Sandbox Code Playgroud)\n

但为什么最后一步是必要的呢?文档说,如果我设置rownames = NA,那么我将得到以下行为:NA: keep row names。这个示例如何阻止rownames = NA保留行名称,正如文档声称的那样?

\n

小智 8

使用as_tibble(mtcars, rownames = NA)你确实保留了行名,但它们是不可见的。

library(tidyverse)

as_tibble(mtcars, rownames = NA) %>% 
  rownames_to_column()

#> # A tibble: 32 x 12
#>    rowname       mpg   cyl  disp    hp  drat    wt  qsec    vs    am  gear  carb
#>    <chr>       <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#>  1 Mazda RX4    21       6  160    110  3.9   2.62  16.5     0     1     4     4
#>  2 Mazda RX4 ~  21       6  160    110  3.9   2.88  17.0     0     1     4     4
#>  3 Datsun 710   22.8     4  108     93  3.85  2.32  18.6     1     1     4     1
#>  4 Hornet 4 D~  21.4     6  258    110  3.08  3.22  19.4     1     0     3     1
#>  5 Hornet Spo~  18.7     8  360    175  3.15  3.44  17.0     0     0     3     2
#>  6 Valiant      18.1     6  225    105  2.76  3.46  20.2     1     0     3     1
#>  7 Duster 360   14.3     8  360    245  3.21  3.57  15.8     0     0     3     4
#>  8 Merc 240D    24.4     4  147.    62  3.69  3.19  20       1     0     4     2
#>  9 Merc 230     22.8     4  141.    95  3.92  3.15  22.9     1     0     4     2
#> 10 Merc 280     19.2     6  168.   123  3.92  3.44  18.3     1     0     4     4
#> # ... with 22 more rows
Run Code Online (Sandbox Code Playgroud)

rownames_to_column()检查不使用时输出的差异rownames = NA

as_tibble(mtcars) %>% 
  rownames_to_column()

#> # A tibble: 32 x 12
#>    rowname   mpg   cyl  disp    hp  drat    wt  qsec    vs    am  gear  carb
#>    <chr>   <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#>  1 1        21       6  160    110  3.9   2.62  16.5     0     1     4     4
#>  2 2        21       6  160    110  3.9   2.88  17.0     0     1     4     4
#>  3 3        22.8     4  108     93  3.85  2.32  18.6     1     1     4     1
#>  4 4        21.4     6  258    110  3.08  3.22  19.4     1     0     3     1
#>  5 5        18.7     8  360    175  3.15  3.44  17.0     0     0     3     2
#>  6 6        18.1     6  225    105  2.76  3.46  20.2     1     0     3     1
#>  7 7        14.3     8  360    245  3.21  3.57  15.8     0     0     3     4
#>  8 8        24.4     4  147.    62  3.69  3.19  20       1     0     4     2
#>  9 9        22.8     4  141.    95  3.92  3.15  22.9     1     0     4     2
#> 10 10       19.2     6  168.   123  3.92  3.44  18.3     1     0     4     4
#> # ... with 22 more rows
Run Code Online (Sandbox Code Playgroud)

由reprex 包于 2021 年 3 月 2 日创建(v1.0.0)