闪亮和RMarkdown:渲染多个块

时间:2017-04-12 13:38:13

标签: shiny r-markdown chunks

我想创建一个Shiny-RMarkdown应用程序,它允许上传自己的数据集。数据集有时不仅会影响一个可以通过renderPlot()(或类似)重新渲染的块,但有时会影响两个或更多块。请参阅以下示例:

---
title: Render multiple chunks
output: html_document
runtime: shiny
---

```{r echo=FALSE}
library(shiny)
fileInput('file1', 'Choose your own CSV File instead of provided 
data',accept=c('text/csv', 'text/comma-separated-values,text/plain', 
'.csv'))

go1<-reactive({
  dpath <- "CurrentBiologyData.txt"
  if(!is.null(input$file1)){
     dpath <- input$file1$datapath
  }
  CB.dat <- read.table(dpath, header = TRUE)  #choose 'CurrentBiologyData.txt'
  plot(CB.dat)
})
```

```{r echo=FALSE}
renderPlot({
      go1()
})
```

```{r}
   renderPlot({
   print(CB.dat)
   }) 
```

如果我上传新的数据集,那么我有三个受影响的块。问题是第三个块没有看到填充在第一个块中的CB.dat:

Error: Object 'CB.dat' not found

我是如何做到这一点的?

1 个答案:

答案 0 :(得分:1)

将您在评论中的含义应用于您的示例

  

将文件读数置于反应中,然后在需要的地方使用

---
title: Render multiple chunks
output: html_document
runtime: shiny
---

```{r echo=FALSE}
library(shiny)
fileInput('file1', 'Choose your own CSV File instead of provided 
data',accept=c('text/csv', 'text/comma-separated-values,text/plain', 
'.csv'))

CB.dat<-reactive({
  dpath <- "CurrentBiologyData.txt"
  if(!is.null(input$file1)){
     dpath <- input$file1$datapath
  }
  read.table(dpath, header = TRUE)  #choose 'CurrentBiologyData.txt'
})
```

```{r echo=FALSE}
renderPlot(plot(CB.dat())
```

```{r}
renderTable(CB.dat())
```