我正在尝试对两个列向量的组合全部运行一个函数。
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解决方案。
答案 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 = .)