如何使用 magrittr 管道进行乘法运算

How to do multiplication with magrittr pipes

在 R 中制作 table 的传统方法:

data(mtcars)

round(100*prop.table(xtabs(~ gear + cyl, data = mtcars), 1), 2)

returns

   cyl
gear     4     6     8
  3  6.67 13.33 80.00
  4 66.67 33.33  0.00
  5 40.00 20.00 40.00

要使用 magrittr 管道复制它,我试过:

library(magrittr)

mtcars %>%
 xtabs(~ gear + cyl, data = .) %>%
 prop.table(., 1)

到目前为止效果很好

    cyl
gear          4          6          8
   3 0.06666667 0.13333333 0.80000000
   4 0.66666667 0.33333333 0.00000000
   5 0.40000000 0.20000000 0.40000000

但是任何尝试执行下一部分(我将比例转换为百分比,然后四舍五入)的尝试都会导致错误。例如:

mtcars %>%
  xtabs(~ gear + cyl, data = .) %>%
  100*prop.table(., 1)

mtcars %>%
  xtabs(~ gear + cyl, data = .) %>%
  prop.table(., 1) %>%
  100 * .

全部导致错误。我错过了什么?

您需要将 * 放在引号中 - "*"(),并使用 1 作为 prop.table 中的参数以匹配示例。

mtcars %>%
  xtabs(~ gear + cyl, data = .) %>%
  prop.table(., 1) %>%
  "*"(100 ) %>% round(.,2)