Как использовать квазицитатуру с pmap? - PullRequest
0 голосов
/ 18 октября 2018

Я создаю функцию f1 для рисования диаграммы, передающей имена переменных без кавычек из mtcars.Ниже отлично работает:

f1 <- function(dt, title, var) {
  var <- enquo(var)
  ggplot(dt) +
  geom_line(aes(x = mpg, y = !!var)) +
    ggtitle(var)
}
f1(mtcars, var = disp)  

Теперь я хотел бы повторить, используя pmap.Я пытаюсь сделать это всего за 1 итерацию, но получаю сообщение об ошибке:

pmap(list(data = mtcars, title = disp, var = disp), f1)
>Error in is.data.frame(.l) : object 'disp' not found

Как мне это исправить?

1 Ответ

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

(обратите внимание, что ваше определение f1 никогда не использует аргумент title.)

Если вы выполняете итерации по нескольким столбцам (например, disp, hp и т. Д.),Одним из способов является использование rlang::exprs() для захвата неоцененных выражений:

l1 <- list(mtcars, mtcars)
l2 <- list("Title", "Not Used")
l3 <- rlang::exprs(disp, hp)

pmap( list(l1,l2,l3), f1 )

Если вы выполняете итерации по нескольким фреймам данных, но строите одну и ту же переменную, вы можете просто передать свои выражения как ... вpmap:

pmap( list(l1), f1, "My Title", disp )

или просто

map( l1, f1, "My Title", disp )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...