Rmd中特定于数据的selectInput选项

Rmd中特定于数据的selectInput选项,r,shiny,r-markdown,R,Shiny,R Markdown,我正在尝试使用R-markdown创建一个闪亮的小应用程序。我的应用程序看起来像: --- title: "MySHinyApp" author: "Eeshan Chatterjee" date: "Wednesday 25 March 2015" output: html_document runtime: shiny --- ```{r, echo=FALSE} source("~/MyAnalysis.R") inputPanel(textInput("filepath",labe

我正在尝试使用R-markdown创建一个闪亮的小应用程序。我的应用程序看起来像:

---
title: "MySHinyApp"
author: "Eeshan Chatterjee"
date: "Wednesday 25 March 2015"
output: html_document
runtime: shiny
---

```{r, echo=FALSE}
source("~/MyAnalysis.R")


inputPanel(textInput("filepath",label = "Full path to appnexus csv export file",value = "~/Downloads/rawData.csv"))
renderText(paste0("Reading file: ",input$filepath))

mydata = reactive(
  tryCatch(read.csv(text=readLines(input$filepath),header = T),
           error = function(e){
             return(matrix('Placeholder',1,1))
           })

)

# renderText(paste(mydata()[1,],collapse = ','))
renderText("=====================================")

plotData = reactive({
  analysis = analyseData(mydata())
  return(analysis)
  })
input_list = reactive(list(names(plotData()$inputList)))


inputPanel(selectInput("ip_selection",label = "Select Input",choices = input_list(),selected = input_list()[1]))
renderText(input$ip_selection)
```
MyAnalysis.R看起来像:

analyseData = function(data){
  # Do some analysis
  # ....
  #Give output in the format:
  analysedData = list(inputList = list("a","b","c"),otherMetrics = list(one="one"))
  # "a","b","c" come from the data, essentially subsetting/modelling parameters. Can't be static, these are data-specific
  return(analysedData)
}
1,2,3,4,5,6
3,9,4,8,7,5
4,2,8,4,9,6
myData看起来像:

analyseData = function(data){
  # Do some analysis
  # ....
  #Give output in the format:
  analysedData = list(inputList = list("a","b","c"),otherMetrics = list(one="one"))
  # "a","b","c" come from the data, essentially subsetting/modelling parameters. Can't be static, these are data-specific
  return(analysedData)
}
1,2,3,4,5,6
3,9,4,8,7,5
4,2,8,4,9,6
当我运行此操作时,会出现以下错误:

Error: Operation not allowed without a reactive context. (You tried to do something that can only be done from inside a reactive expression or observer)

我不知道我哪里出了问题以及如何解决它。感谢您的帮助

您试图根据所选的值创建ui,但忘记在此处应用基本的功能。如果UI是基于服务器端值生成的,则必须使用renderUI创建它

我希望以下内容对你有用。。我检查了我的末端,构建正确,页面开始良好。我不知道输入文件和期望值

---
title: "MySHinyApp"
author: "Eeshan Chatterjee"
date: "Wednesday 25 March 2015"
output: html_document
runtime: shiny
---

```{r, echo=FALSE}
library(shiny)
source('MyAnalysis.R')

inputPanel(
  fileInput("filepath", label = "Full path to appnexus csv export file"#, value = "~/Downloads/rawData.csv"
    ))

mydata = reactive({
  df = tryCatch(read.csv(text=readLines(input$filepath),header = T),
                error = function(e){
                  return(matrix('Placeholder',1,1))
                  }
                )
  analysis = analyseData(df)
  return = list(names(analysis$inputList))
  }
)

renderUI(
  selectInput("ip_selection",label = "Select Input",
              choices = mydata(),
              selected = mydata()[1]))

renderText(paste0("Reading file: ",input$filepath))
renderText("=====================================")

renderText(input$ip_selection)
```

我的啊哈!片刻。这真是太棒了。谢谢