如何在不传递其他参数的情况下传递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))
2条答案
按热度按时间oprakyz71#
作为一种技巧,你可以给予这个参数一个名字,这个名字不在
adorn_totals
的命名参数中。即:dxxyhpgq2#
一个快速的方法是在管道传输到
adorn_totals
之前将非目标列传输到character。