2017-05-31 192 views
1

我有一个表单应用程序,可以保存输入的信息以及点击图表上的位置到CSV。我无法让它输出此点击输入的x/y坐标。我可以得到完整的plot_click列表输出 但这包含逗号,因此导致CSV中的困难。我已经尝试了每一种类型的反应表达的,但不能得到输入$ plot_click $ X任何NULL之外写点击xy坐标csv

代码如下:UI

shinyUI(
    fluidPage(
    titlePanel("click on location"), 
div(
    textInput("name", "Name", ""), 
    actionButton("submit", "Submit", class = "btn-primary") 
), 
div(plotOutput("plot1", click = "plot_click"), 
    verbatimTextOutput("info") 
))) 

服务器

fieldsAll <- c("name", "plot_click") 
plotx <- c(0,100) 
ploty <- c(0,70) 
responsesDir <- file.path("responses") 
epochTime <- function() { 
    as.integer(Sys.time()) 
} 
humanTime <- function() format(Sys.time(), "%Y%m%d-%H%M%OS") 

shinyServer (function(input, output, session) { 


    formData <- reactive({ 
    data <- sapply(fieldsAll, function(x) input[[x]]) 
data <- c(data, timestamp = epochTime()) 
data <- t(data) 
data 
    }) 
    saveData <- function(data) { 
fileName <- sprintf("%s_%s.csv", 
        humanTime(), 
        digest::digest(data)) 

    write.csv(x = data, file = file.path(responsesDir, fileName), 
      row.names = FALSE, quote = TRUE) 
    } 

    # action to take when submit button is pressed 
    observeEvent(input$submit, { 
    saveData(formData()) 
}) 
    output$plot1 <- renderPlot({ 
plot(plotx, ploty) 
    }) 

output$info <- renderText({ 
    paste0("x=", input$plot_click$x, "\ny=", input$plot_click$y) 
}) 

    }) 

任何帮助将不胜感激! Conor

回答

0

你快到了。稍微修改你的反应表达式可以给你x坐标。

formData <- reactive({ 
     data <- sapply(fieldsAll, function(x) unlist(input[[x]][1])) 
     data <- c(data, timestamp = epochTime()) 
     data <- t(data) 
     data 
     }) 
+0

谢谢,这正是我们所需要的。 –

+0

如果您的查询已解决,可以接受答案吗? – SBista