将数据提交到闪亮以创建数据框,然后将数据帧写入文件

时间:2014-08-13 09:41:49

标签: r shiny rstudio

我是新手。我想知道如何使用“textInput”向闪亮的服务器提交三个字符串以创建数据帧,然后将此数据帧写入本地文件。

这是我的脚本。但它不起作用。任何帮助表示赞赏。谢谢!

UI.R

shinyUI(fluidPage(

  fluidRow(

    absolutePanel(

      helpText(h5("Submit new gene.")),
      wellPanel(
        column(4, textInput('symsub', "Gene symbol",value="")),
        column(4, textInput('msusub', "MSU genomic locus",value="")),
        column(4, textInput('rapsub', "RAPdb genomic locus",value="")),
        actionButton("submit1", strong("Submit"))
      ),

      textOutput("mytext20"),

      p(HTML("<b><div style='background-color:#FADDF2;border:1px solid
             blue;'></div></b>")),
      br(),

      right=5, left=10
    )
  )

))

server.R

write.gene <- function(df) {
  write.table(df, file="gene.info", sep="\t", quote=F, row.names=F)
}


#### Shiny
shinyServer(function(input, output) {

  geneNew <- reactive({
    if (input$submit1>0) {
      df.gene <- data.frame(Symbol=input$symsub, MSU=input$msusub, RAPdb=input$rapsub,
                            stringsAsFactors=FALSE)
      write.gene(df.gene)
    } else {NULL}
  })

  output$mytext20 = renderText({
    input$submit1
  })
}

1 个答案:

答案 0 :(得分:2)

你的反应导体:

  geneNew <- reactive({
    if (input$submit1>0) {
      df.gene <- data.frame(Symbol=input$symsub, MSU=input$msusub, RAPdb=input$rapsub,
                            stringsAsFactors=FALSE)
      write.gene(df.gene)
    } else {NULL}
  })

在您的代码中无处调用,因此永远不会执行。请改为使用观察者:

  observe({
    if (input$submit1>0) {
      df.gene <- data.frame(Symbol=input$symsub, MSU=input$msusub, RAPdb=input$rapsub,
                            stringsAsFactors=FALSE)
      write.gene(df.gene)
    } else {NULL}
  })