将xy坐标单击写入csv

时间:2017-05-31 12:51:32

标签: r csv shiny

我有一个表单应用程序,可以将键入的信息以及在绘图上单击的位置保存为CSV。我无法输出此点击输入的x / y坐标。我可以获得完整的 plot_click 列表输出  但这包含逗号,因此导致CSV难度大。我已尝试过各种类型的反应式表达式但除了NULL input $ plot_click $ x 之外无法获得任何内容

代码如下: 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)
 })

  })

任何帮助将不胜感激! 康纳

1 个答案:

答案 0 :(得分:0)

你快到了。略微修改您的反应式表达式可以得到x坐标。

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