如何使用 pmap 进行准量化?

How to use quasiqutation with pmap?

我创建了一个函数 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

我该如何解决这个问题?

(请注意,您对 f1 的定义从不使用参数 title。)

如果您要遍历多个列(例如,disphp 等),一种方法是使用 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 )