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

时间:2015-01-26 18:13:18

标签: r magrittr

在R中制作表格的传统方式:

data(mtcars)

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

返回

   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 个答案:

答案 0 :(得分:20)

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

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