问题通过函数拉取字符串

时间:2015-11-05 20:40:37

标签: r function syntax ggplot2

所以我的代码大部分都是好的,最后这个部分出现了问题:

sqlPlot <- sqlPlot + facet_wrap(~variable)

这种情况正在发生,因为我所通过的变量是一个字符串,并且与我的代码的facet_wrap()段不兼容。

我的问题是,如何更改语法以使其有效?我已经尝试过研究如何解决这个问题,但由于我对R很新,我不完全确定如何提出这个问题。任何和所有帮助将不胜感激。

library(sqldf)
library(dplyr)
library(ggplot2)
library(lubridate)

sqldfGraphFn <- function(variable) { colNames <- paste("select ", get(variable), ", FYFQ, Date, sum(Revenue), sum(Quantity),", "sum(Revenue*Discount)/sum(Revenue)", sep="") from <- " from cleanData" groupBy <- paste(" group by ", get(variable), ", FYFQ, Date", sep="") sqlEverything <- paste(colNames, from, groupBy, sep="") sqlTest <- sqldf(sqlEverything)

colnames(sqlTest)[which(colnames(sqlTest)=="sum(Revenue*Discount)/sum(Revenue)")] <- "wtCOGs" arguments <- as.list(match.call()) variable = eval(arguments$variable, sqlTest) sqlPlot <- ggplot(data=sqlTest, aes(x=weightedDiscount, y=SLC)) + geom_point() sqlPlot <- sqlPlot + scale_x_continuous(limits=c(-.05, .05), breaks=(-10:10)/200) + scale_y_continuous(limits=c(0, 1000000)) sqlPlot <- sqlPlot + facet_wrap(~variable) sqlPlot } sqldfGraphFn("CarType")

1 个答案:

答案 0 :(得分:1)

您可以使用字符串创建公式对象,所以:

variable <- 'CarType'
myFormula <- as.formula(paste0('~', variable))

...

sqlPlot + facet_wrap(myFormula)