绘制有光泽的数据

时间:2014-11-25 03:27:09

标签: r markdown shiny

我试图将可编辑的闪亮表格嵌入到rmarkdown文件中。交互式输入表后,我的代码必须绘制表的内容以及工作区中的其他数据。

我已经成功完成了第一步,我已经设法使用shinyTable包输入表格。但我一直试图创造情节。我不知道如何调用表值,所以我可以在代码的其他部分使用它们。

我希望能够在shinyApp(。)块之外调用生成的表(参见下面的代码)。

代码示例



---
output: html_document
runtime: shiny
---

#This is a R Markdown file

```{r, echo=FALSE}
library(shinyTable)
shinyApp(
server = function(input, output,session) {
  cachedTbl <- NULL
  output$tbl <- renderHtable({
    if (is.null(input$tbl)){
      rows <- 5
      tbl <- data.frame(list(num1=1:rows, 
                             num2=(1:rows)*20,
                             letter=LETTERS[1:(rows)]))
      rownames(tbl) <- LETTERS[2:(rows+1)]      
      cachedTbl <<- tbl      
      return(tbl)
    } else{
      tbl <- input$tbl
      cachedTbl <<- tbl
      return(tbl)
    }
  })  
},  
ui = fluidPage(
  mainPanel(
    htable("tbl", colHeaders="provided")
  )
)
)
renderText({
  paste(is.null(input$tbl))   ## This line returns "TRUE"
  })
```
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:1)

尝试使用反应值,使用reactiveValues或makeReactiveBinding(http://shiny.rstudio.com/reference/shiny/latest/

```{r, echo=FALSE}
cachedTbl <<- 0
makeReactiveBinding("cachedTbl")

library(shinyTable)
shinyApp(
server = function(input, output,session) {
  # cachedTbl <- NULL
  output$tbl <- renderHtable({
    if (is.null(input$tbl)){
      rows <- 5
      tbl <- data.frame(list(num1=1:rows, 
                             num2=(1:rows)*20,
                             letter=LETTERS[1:(rows)]))
      rownames(tbl) <- LETTERS[2:(rows+1)]      
      cachedTbl <<- tbl      
      return(tbl)
    } else{
      tbl <- input$tbl
      cachedTbl <<- tbl
      return(tbl)
    }
  })  
},  
ui = fluidPage(
  mainPanel(
    htable("tbl", colHeaders="provided")
  )
)
)
renderText({
  # paste(is.null(input$tbl))   ## This line returns "TRUE"
  cachedTbl[[2]]
})
```