使用Tibble列作为函数输入的Tidyverse解决方案

时间:2018-10-17 05:46:12

标签: r tidyverse purrr

我正在尝试对两个列向量的组合全部运行一个函数。

library(tidyverse)
combination <- tibble(x = c(1, 2), y = c(3, 4))

sum_square <- function(x, y) {
  x^2+y^2
}

我想运行此功能以x列和y列的所有组合:

sum_square(1, 3)
sum_square(1, 4)
sum_square(2, 3)
sum_square(2, 4)

理想情况下,我想使用tidyverse解决方案。

1 个答案:

答案 0 :(得分:3)

我们可以首先expand,然后在扩展的数据集上应用sum_square

library(tidyverse)
expand(combination, x, y) %>% 
      mutate(new = sum_square(x, y))
# A tibble: 4 x 3
#      x     y   new
#  <dbl> <dbl> <dbl>
#1     1     3    10
#2     1     4    17
#3     2     3    13
#4     2     4    20

另一个选项是outer

combination %>%
       reduce(outer, FUN = sum_square) %>% 
       c  %>%
       tibble(new = .)