Извлечь минимальное кратное 5 из списка парных чисел в R - PullRequest
0 голосов
/ 10 января 2020

Я хотел бы извлечь минимальное кратное 5 из списка пар. Вот пример фрейма данных:

library(tidyverse)

z <- tribble(
  ~x,
  c(65, 80, 101),
  c(70, 66, 92),
  c(65, 42, 84),
  c(30, 70, 101),
  c(82, 66, 55)
)

В идеале выводом будет новый столбец с минимальным нечетным числом из каждого списка:

# A tibble: 5 x 2
  x             y
  <list>    <dbl>
1 <dbl [3]>    65
2 <dbl [3]>    70
3 <dbl [3]>    65
4 <dbl [3]>    30
5 <dbl [3]>    55

Ответы [ 2 ]

4 голосов
/ 10 января 2020

Вы можете использовать карту из purrr, чтобы применить функцию к каждому вложенному элементу. Я думаю, что это должно работать:

library(purrr)
z %>% mutate(y=map_dbl(x,~min(.x[.x %% 5==0])))
# A tibble: 5 x 2
  x             y
  <list>    <dbl>
1 <dbl [3]>    65
2 <dbl [3]>    70
3 <dbl [3]>    65
4 <dbl [3]>    30
5 <dbl [3]>    55

или используя только карту, вы удалите y:

z %>% mutate(y=map(x,~min(.x[.x %% 5==0]))) %>% unnest(y)
3 голосов
/ 10 января 2020

Вот способ добавить минимальное кратное 5:

z$y <- vapply(z$x, function(e) min(e[e %% 5 == 0]), numeric(1))


# A tibble: 5 x 2
  x             y
  <list>    <dbl>
1 <dbl [3]>    65
2 <dbl [3]>    70
3 <dbl [3]>    65
4 <dbl [3]>    30
5 <dbl [3]>    55
...