2017-08-15 73 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」參數不會被返回。 –