我试图将可编辑的闪亮表格嵌入到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;
答案 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]]
})
```