我有一个闪亮的应用程序,可以为给定的输入创建一个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, ")")))