2015-11-05 52 views
2

所以我的代碼大部分是好去拉一個字符串,這個問題帶有此部分結尾:問題通過函數

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")
+0

通常一個使用'FN $ sqldf'而不是粘貼到內插字符串。查看sqldf主頁上的示例。請提供包括所有輸入的完整可重複代碼。 –

回答

1

您可以創建公式對象進行字符串,那麼:

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

... 

sqlPlot + facet_wrap(myFormula) 
+0

太棒了!這正是我需要的!非常感謝,我 – Yosarion

+0

@Yosarion快樂的幫助!考慮標記我的答案是正確的;) – DunderChief