2014-11-25 61 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]] 
}) 
```