相关疑难解决方法(0)

将字符串传递给函数中的ggplot2

经常在工作中使用ggplot2并构建包装函数以加快我的工作流程.使用非标准评估(NSE)aes迫使我使用实际的变量名而不是传递字符串.所以我复制并重命名数据帧和变量名以安抚ggplot2.必须有一个更好的方法.如何通过函数包装器使ggplot2接受未知的数据帧和列名,而无需复制数据帧和使用通用列名?

这有效:

ggplot(mtcars, aes(x=mpg, y=hp)) +
    geom_point()
Run Code Online (Sandbox Code Playgroud)

这不是:

FUN <- function(dat, x, y) {
    ggplot(dat, aes(x = x, y = y)) +
        geom_point()
}

FUN(mtcars, "mpg", "hp")
Run Code Online (Sandbox Code Playgroud)

string r ggplot2

21
推荐指数
2
解决办法
5997
查看次数

没有``aes_string()''的ggplot2的标准评估

我想将带引号的字符串传递给调用ggplot2的函数。

library(magrittr); library(ggplot2)
g1 <- function( variable ) {
  ggplot(mtcars, aes_string("wt", variable, size="carb")) +
    geom_point()
}
g1("mpg")
Run Code Online (Sandbox Code Playgroud)

这很好用,但是v3.1.0文档提倡准引用和NSE aes()

所有这些功能均已弃用。请改用整洁的评估习惯用法(请参阅aes()文档中的准引用部分)。

但是这些aes()示例使用NSE(g1(mpg)而不是g1("mpg"))。同样,这些SO解决方案使用NSE值或aes_()/ aes_string()

我希望该函数接受SE /引号字符串,以容纳字符向量,例如:

variables <- c("mpg", "cyl", "disp")
variables %>% 
  lapply(g1)
Run Code Online (Sandbox Code Playgroud)

r ggplot2 standard-evaluation

4
推荐指数
1
解决办法
166
查看次数

标签 统计

ggplot2 ×2

r ×2

standard-evaluation ×1

string ×1