我怎样才能传递应该考虑的列adorn_totals而不传递其他参数。
library(dplyr)\nlibrary(janitor)\n\nmtcars %>% \n count(vs,am) %>% \n adorn_totals()\n#> vs am n\n#> 0 0 12\n#> 0 1 6\n#> 1 0 7\n#> 1 1 7\n#> Total 2 32\nRun Code Online (Sandbox Code Playgroud)\n我不想计算“AM”列中的总计,只计算“n”列中的总计。我知道我可以通过在函数末尾传递列名来做到这一点,但要做到这一点,你必须首先传递所有其他参数adorn_totals(,,,, n),这很丑陋。
有没有办法直接做到这一点,如:
\nmtcars %>% \n count(vs,am) %>%\n adorn_totals(... = n)\n#> Error in `adorn_totals()`:\n#> ! Names can\'t be of the form `...` or `..j`.\n#> \xe2\x9c\x96 These names are invalid:\n#> * "..." at location 1.\n#> Backtrace:\n#> \xe2\x96\x86\n#> 1. \xe2\x94\x9c\xe2\x94\x80mtcars %>% count(vs, am) %>% adorn_totals(... = n)\n#> 2. \xe2\x94\x94\xe2\x94\x80janitor::adorn_totals(., ... = n)\n#> 3. \xe2\x94\x94\xe2\x94\x80tidyselect::eval_select(expr, data = dat)\n#> 4. \xe2\x94\x94\xe2\x94\x80tidyselect:::eval_select_impl(...)\n#> 5. \xe2\x94\x9c\xe2\x94\x80tidyselect:::with_subscript_errors(...)\n#> 6. \xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80rlang::try_fetch(...)\n#> 7. \xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80base::withCallingHandlers(...)\n#> 8. \xe2\x94\x94\xe2\x94\x80tidyselect:::vars_select_eval(...)\n#> 9. \xe2\x94\x94\xe2\x94\x80tidyselect:::ensure_named(...)\n#> 10. \xe2\x94\x94\xe2\x94\x80vctrs::vec_as_names(names(pos), repair = "check_unique", call = call)\n#> 11. \xe2\x94\x94\xe2\x94\x80vctrs (local) `<fn>`()\n#> 12. \xe2\x94\x94\xe2\x94\x80vctrs:::validate_unique(names = names, arg = arg, call = call)\n#> 13. \xe2\x94\x94\xe2\x94\x80vctrs:::stop_names_cannot_be_dot_dot(names, call = call)\n#> 14. \xe2\x94\x94\xe2\x94\x80vctrs:::stop_names(...)\n#> 15. \xe2\x94\x94\xe2\x94\x80vctrs:::stop_vctrs(...)\n#> 16. \xe2\x94\x94\xe2\x94\x80rlang::abort(message, class = c(class, "vctrs_error"), ..., call = vctrs_error_call(call))\nRun Code Online (Sandbox Code Playgroud)\n
作为一种技巧,您可以为该参数指定一个名称,该名称不在 的命名参数中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
Run Code Online (Sandbox Code Playgroud)