r - 将字符串作为变量传递给 R 中的日志函数

标签 r ggplot2

我正在尝试使用如下所示的 for 循环生成一系列图:

varList = list("Var1","Var2","Var3")
plot_list = list()
for (i in 1:3) {
    gg = ggplot(data_set,aes(x=log(varList[[i]])),fill=factor(RETAINED))) 
    gg = gg + geom_density(alpha=.3) + labs(x = varList[[i]],y="Density") 
    gg = gg + ggtitle(paste("Distribution of ",varList[[i]],sep=" ")) 
    plot_list[[i]] = gg
}

varList[[i]] 适用于 labs() 和 ggtitle 但不幸的是,当我尝试同样的事情时,在 aes() 中获得了 log() 函数,但它不起作用,它给了我以下错误:

Error while parsing the string.

如果我用例如 Var1 替换 arList[[i]] 一切正常,没有问题,但那样我只会一遍又一遍地得到相同的数字。我想知道是否有办法将此字符串转换为变量,我尝试了以下方法:

  • get() 函数
  • 解析(文本 = varList[[i]])
  • 评估(分析(文本 = varList[[i]]))

以上都没有让我找到正确答案。任何帮助将不胜感激。

谢谢

最佳答案

我使用 Gregor 和 Roland 的评论和建议解决了我的问题,如下所示:

varList = list("Var1","Var2","Var3")
plot_list = list()
for (i in 1:3) {
    gg = ggplot(data_set,aes(xfill=factor(RETAINED)))
    gg = gg + aes_string(x = sprintf("log(%s)", varList[[i]])) 
    gg = gg + geom_density(alpha=.3) + labs(x = varList[[i]],y="Density") 
    gg = gg + ggtitle(paste("Distribution of ",varList[[i]],sep=" ")) 
    plot_list[[i]] = gg
}

关于r - 将字符串作为变量传递给 R 中的日志函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31864618/

相关文章:

Shiny 应用程序中的 renderImage() 和 .svg

r - ggplot2:如何调整绘图区域和轴文本之间的间距

r - 如何使用 ggplot2 生成热图?

r - 如何在ggplot2中使用coord_polar移动x轴标签

r - 将字符串附加到列表中的日期项时如何保持 POSIXct 格式?

运行香农和辛普森 : Vegan package

r - 将值分配给特定的data.table列和行

r - 你如何在 ggplot 中将文本放在不同的行上

r - 当 ggtitle 包含字母 q,y,p,g,j 时如何保持绘图尺寸相等

r - 将ggplot对象转换为在 Shiny 的应用程序中进行绘图