2017-08-15 75 views
1

我想让用户选择显示哪种ggplot图形(geom_plot(),geom_boxplot()等),但我不知道如何传递“函数”而不是函数的字符串。在R中传入ggplot2函数作为输入Shiny

我的一个输入是这样的:

selectInput("graph_type", "Select graph type", 
     c("geom_point()", "geom_boxplot()"), selected = NULL, multiple = FALSE, 
     selectize = TRUE, width = NULL, size = NULL) 

和输出是这样的:

output$p1 = renderPlot({ 
    ggplot(raw, aes(x=raw[,input$x1], y=raw[,input$y1])) +input$graph_type 

而且我的错误看起来像这样:

Error: Don't know how to add input$graph_type to a plot

灿有人帮助我?谢谢!

P.S.假设代码中的其他所有内容都起作用如果需要可以提供整个脚本。

+0

我假定'$输入graph_type'被作为一个字符所以' “geom_point()”'通过。既然是这样,'ggplot'不知道如何添加它。我会尝试'as.name(输入$ graph_type)' – roarkz

+0

@WestleyDang如果我的解决方案解决了您的问题,您可以接受它 – PoGibas

回答

0

使用get按对象的名称返回值。

ggplot(raw, aes(x=raw[,input$x1], y=raw[,input$y1])) + 
    get(input$graph_type)() 
+1

如果您的冷杉剥离了parens,可能会工作。看看这个小测试:get(“mean()”)### get(“mean()”):object'mean()'找不到的错误 –

+0

@ 42-'get(“mean “)(c(1:10))'对我有用 – PoGibas

+0

你似乎无法阅读意义。值frorm'selectInput'是我放在我的'get'里面的。你的“get”参数不会被返回。 –