我正在Rmarkdown建立一个网站。我正在使用的.rmd文件之一从用户单击指向.rmd文档的链接时创建的表中加载其内容的一些元素。
我选择这种方法的原因是我想使用单个.rmd文件来制作页面布局,但每次都要重新创建部分内容,方法是根据用户点击的链接对象加载元素。
但是,当用户在同一会话中单击多个链接时,.rmd文档中的页面始终显示单击的第一个链接中的内容。我猜这是一个缓存问题,虽然如果我设置opts_chunk$set(cache=FALSE)
它不会改变。我也按照建议here 尝试了opts_chunk$set(cache.extra=file.info("~/subset_table.csv")$mtime)
,但它也不起作用。
NB :我正在运行来自RStudio的文件。我不确定该问题是否与在index.rmd文档的同一运行中从同一RStudio会话调用的.rmd文档有关。
以下是代码。
我在闪亮的app DT表中使用行作为链接:
ui<- fluidpage(
sidebarPanel(textInput("type",label = "type", value = ""),
mainPanel(DT::dataTableOutput("res")),
conditionalPanel(
condition="output.res",
DT::dataTableOutput("tableSubset")
)
)
server<- function(input,output, data= dt) {
res.table=subset(dt,dt$Type=input$type)
res.table=as.data.frame(res.table)
colnames(res.table)=c("Name","Type","Value")
output$res=DT::renderDataTable( {
res=res.table
return(res)
}, selection=single, server=T)
output$tableSubset=DT::renderDataTable({
rown=input$res_rows_selected
if (length(rown)) {
fullTable=res.table
name=fullTable[rown,"Name"]
tableSubset= subset(dt,dt$ID==name)
write.csv(tableSubset,"~/subset_table.csv")
datatable(tableSubset,callback=JS("onclick=window.open('/page.rmd','_blank')"))
}
})
}
shinyApp(ui = ui, server = server)
这是Rmarkdown文档:
output: html_document
_ _ _ _
``` {r setup, include=FALSE}
knitr::opts_chunk$set(cache=FALSE)
```
```{r contentLoader}
myTable=read.csv("~/subset_table.csv", header=T)
name=as.character(rnaTable$ID)
```
## `r name `