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

Joe*_*Joe 3 r tidyverse

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

library(tidyverse)

c(2, 3) %>% 
  .[1] * .[2]
Run Code Online (Sandbox Code Playgroud)

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

v <- c(2,3)
v[1] * v[2]
Run Code Online (Sandbox Code Playgroud)

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

akr*_*run 7

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

c(2, 3) %>%
        {.[1] * .[2]}
#[1] 6
Run Code Online (Sandbox Code Playgroud)

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

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

map2_dbl(2:5, 6:9, `*`)
#[1] 12 21 32 45
Run Code Online (Sandbox Code Playgroud)

或者 reduce

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

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