Tidy Eval: использование '=' внутри кво - PullRequest
0 голосов
/ 25 октября 2018

Просто попадаю в tidy eval и собираюсь применить его к одному из моих текущих проектов.

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

library(rlang)
library(tidyverse)

my.filter <- quo(species=='Human')
my.summary <- quo(mean(height, na.rm=T))

starwars %>%
  filter(!!my.filter) %>%
   summarise(!!my.summary)

Однако, что если я собираюсь переименовать итоговую колонку?Скажи Avg_Ht?Если я попробую это в функции quo ():

    my.summary <- quo(Avg_Ht=mean(height, na.rm=T))

У меня получится:

Error in quo(Avg_Ht = mean(height, na.rm = T)) : 
  unused argument (Avg_Ht = mean(height, na.rm = T))

Любая помощь здесь?

Спасибо!

1 Ответ

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

После прочтения этой проблемы github похоже, что вы можете использовать quos и !!! для этого.

Я изначально использую := для присвоения имени

my.summary <- quos(Avg_Ht := mean(height, na.rm=T))

но оказывается, что в этом не было необходимости.

my.summary <- quos(Avg_Ht = mean(height, na.rm=T))

starwars %>%
     filter(!!my.filter) %>%
     summarise(!!!my.summary)

# A tibble: 1 x 1
  Avg_Ht
   <dbl>
1   177.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...