将参数传递给adorn_totals中的省略号(...)

bkhjykvo  于 2023-05-20  发布在  其他
关注(0)|答案(2)|浏览(100)

如何在不传递其他参数的情况下传递adorn_totals应该考虑的列。

library(dplyr)
library(janitor)

mtcars %>% 
  count(vs,am) %>% 
  adorn_totals()
#>     vs am  n
#>      0  0 12
#>      0  1  6
#>      1  0  7
#>      1  1  7
#>  Total  2 32

我不想计算“AM”列中的总数,只想计算“n”列中的总数。我知道我可以通过在函数的末尾传递列名来做到这一点,但是要做到这一点,你必须首先传递所有其他参数adorn_totals(,,,, n),这很难看。
有没有办法直接做到这一点,如:

mtcars %>% 
  count(vs,am) %>%
  adorn_totals(... = n)
#> Error in `adorn_totals()`:
#> ! Names can't be of the form `...` or `..j`.
#> ✖ These names are invalid:
#>   * "..." at location 1.
#> Backtrace:
#>      ▆
#>   1. ├─mtcars %>% count(vs, am) %>% adorn_totals(... = n)
#>   2. └─janitor::adorn_totals(., ... = n)
#>   3.   └─tidyselect::eval_select(expr, data = dat)
#>   4.     └─tidyselect:::eval_select_impl(...)
#>   5.       ├─tidyselect:::with_subscript_errors(...)
#>   6.       │ └─rlang::try_fetch(...)
#>   7.       │   └─base::withCallingHandlers(...)
#>   8.       └─tidyselect:::vars_select_eval(...)
#>   9.         └─tidyselect:::ensure_named(...)
#>  10.           └─vctrs::vec_as_names(names(pos), repair = "check_unique", call = call)
#>  11.             └─vctrs (local) `<fn>`()
#>  12.               └─vctrs:::validate_unique(names = names, arg = arg, call = call)
#>  13.                 └─vctrs:::stop_names_cannot_be_dot_dot(names, call = call)
#>  14.                   └─vctrs:::stop_names(...)
#>  15.                     └─vctrs:::stop_vctrs(...)
#>  16.                       └─rlang::abort(message, class = c(class, "vctrs_error"), ..., call = vctrs_error_call(call))
oprakyz7

oprakyz71#

作为一种技巧,你可以给予这个参数一个名字,这个名字不在adorn_totals的命名参数中。即:

mtcars %>% 
  count(vs,am) %>% 
  adorn_totals(cols=n)

    vs am  n
     0  0 12
     0  1  6
     1  0  7
     1  1  7
 Total  - 32
dxxyhpgq

dxxyhpgq2#

一个快速的方法是在管道传输到adorn_totals之前将非目标列传输到character。

library(dplyr)
library(janitor)

mtcars %>% 
  count(vs,am) %>% 
  # across whatever columns you don't want to include in adorn_totals
  mutate(across(-n, as.character)) %>% 
  adorn_totals()

    vs am  n
     0  0 12
     0  1  6
     1  0  7
     1  1  7
 Total  - 32

相关问题