R:将闪亮的文本输入传递给ggsave函数

时间:2016-03-30 14:04:19

标签: r ggplot2 shiny

我有一个闪亮的应用程序,可以为给定的输入创建一个ggplot。现在,我希望通过textInput为用户提供保存ggplot的自由,包括其他命令。当我使用eval(input$text_input)(评估文本输入中的表达式" text_input")时出错。

MWE看起来像这样:

library(shiny)
library(ggplot2)

ui <- shinyUI(
  fluidPage(
    plotOutput("plot1"),
    textInput("text_input", "Additional Args", "scale = 0.5"),
    actionButton("save", "Save")
  )
)

server <- function(input, output) {
  df <- data.frame(x = 1:10)
  p1 <- ggplot(df, aes(x, x)) + geom_point()

  output$plot1 <- renderPlot(p1)

  observeEvent(input$save, {
    ell <- input$text_input # for example ell <- "scale = 0.5"
    # This code returns the error
    ggsave(filename = "plot1.pdf", p1, ... = eval(ell)) 

    # TARGET:
    # ggsave(filename = "plot1.pdf", p1, scale = 0.5)
    # or whatever the user tries to put into the text_input
  })
}

shinyApp(ui, server)

您对如何在ggsave函数中修复评估有任何想法吗?

修改/溶液

感谢@warmoverflow,这一行解决了这个问题:

eval(parse(text = paste("ggsave(filename = 'plot1.pdf', p1,", ell, ")")))

0 个答案:

没有答案