通过使用。$和。[]调用值来执行计算

时间:2017-09-12 17:20:35

标签: r tidyverse

这纯粹是一个概念性的问题,但是如何在使用。$或。[]的计算中引用我的向量c(2,3)的元素?

library(tidyverse)

c(2, 3) %>% 
  .[1] * .[2]

此代码工作正常但需要创建临时对象(v):

v <- c(2,3)
v[1] * v[2]

我想知道如何在tidyverse中执行计算而不创建临时对象v。

1 个答案:

答案 0 :(得分:7)

我们需要放置大括号以避免运算符优先级

c(2, 3) %>%
        {.[1] * .[2]}
#[1] 6

此外,我们可以使用map2乘以相应的元素(tidyverse

map2_dbl(2, 3, `*`)
#[1] 6

map2_dbl(2:5, 6:9, `*`)
#[1] 12 21 32 45

reduce

c(2, 3) %>% 
    reduce(`*`)
#[1] 6

list(2:5, 6:9) %>% 
           reduce(`*`)
#[1] 12 21 32 45