在Rmarkdown動態標籤,它可以創建標籤,例如:創建於Rmarkdown
---
output: html_document
---
# Tabs {.tabset}
## Tab 1
foo
## Tab 2
bar
我不知道是否有可能創建的標籤任意數量?如何以編程方式創建選項卡?
以下代碼很難做到這一點,但它會產生一個標題而不是標籤。
---
output: html_document
---
# Tabs {.tabset}
```{r echo=FALSE}
shiny::tags$h2("Tab 1")
```
foo
## Tab 2
bar
解決方案
感謝@GGamba提供一個很好的解決方案。我需要更進一步,並能夠將選項卡添加爲循環的一部分,因此我需要進行兩項更改。首先,我用這個代碼,動態地添加標籤(這裏唯一的區別是,我強迫的hrefCode
評價超時內,否則召集所有超時將使用相同的值)
(function(hrefCode){setTimeout(function(){
var tabContent = document.createElement('div');
var tabContainerTarget = document.getElementsByClassName('tab-content')[0];
tabContent.setAttribute('id', 'tab-' + hrefCode);
tabContent.setAttribute('class', 'tab-pane')
tabContent.innerHTML = '", gsub('\n', '', Panel, fixed = TRUE), "';
tabContainerTarget.appendChild(tabContent);
}, 100);
})(hrefCode);
其次,添加標籤在一個循環中,你可以做這樣的事情:
tabsToAdd <- list("tab3" = "hello", "tab4" = "world")
shiny::tagList(lapply(names(tabsToAdd), function(x) {
addToTabset(title = x, tabsetId = 'tbSet1',
tabPanel(x, tabsToAdd[[x]]))
}))
如果光澤本身不能做,那是一個很好的解決方法。你是否也有一個解決方案來完成這個循環,例如。 'lapply(字母,函數(字母)addToTabset(字母,'tbSet1',tabPanel(字母,字母)))'?我不擅長高級Rmd以及如何讓html正確呈現 –
想通了。不得不將這個循環包裝在'tagList()'中,並且還需要在javascript中進行一些修復(請參閱問題本身,以獲取修改後的代碼) –