Решение Tidyverse для использования столбцов Tibble в качестве входных данных для функции - PullRequest
0 голосов
/ 17 октября 2018

Я пытаюсь запустить функцию для всех комбинаций двух векторов столбцов в таблице.

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)

В идеале я хотел бы получить решение по тидиверсу.

1 Ответ

0 голосов
/ 17 октября 2018

Сначала мы можем 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 = .)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...