2014-11-25 81 views
2

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

我已经成功的在第一步,我设法使用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" 
 
    }) 
 
```

+1

在闪亮的应用程序,你会用'输入$ TBL '假设tbl是你用来创建表的id。这不行吗?如果你能提供你所尝试的例子,你更有可能获得帮助。 – Vincent 2014-11-25 08:40:19

+0

我编辑了原帖。 Im试图完成的是在我的rmarkdown代码的其他部分中实际使用输入$ tbl,我在markdown文件中有多个Shiny应用程序。 – Gustavo 2014-11-25 14:22:06

回答

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]] 
}) 
```