でダイナミックなタブを作成し、それは例えば、タブを作成することが可能です:がRmarkdownでRmarkdown
---
output: html_document
---
# Tabs {.tabset}
## Tab 1
foo
## Tab 2
bar
それはタグの任意の数を作成することが可能だ場合、私は思ったんだけど?プログラムでタブを作成するにはどうすればよいですか?
次のコードはこれを行うのが貧弱ですが、結果としてタブの代わりに見出しが表示されます。最適なソリューションを提供するための@GGambaへ
---
output: html_document
---
# Tabs {.tabset}
```{r echo=FALSE}
shiny::tags$h2("Tab 1")
```
foo
## Tab 2
bar
ソリューション
感謝。私はさらに一歩進んで、タブをループの一部として追加する必要があったので、私は2つの変更を加える必要がありました。まず第一に、私は動的にタブを追加するには、このコードを使用し
(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);
第二に、(ここでの唯一の違いは、一緒に呼ばれるそれ以外の場合は、すべてのタイムアウトは同じ値を使用しますので、私はタイムアウト内hrefCode
の評価を強制することです)
tabsToAdd <- list("tab3" = "hello", "tab4" = "world")
shiny::tagList(lapply(names(tabsToAdd), function(x) {
addToTabset(title = x, tabsetId = 'tbSet1',
tabPanel(x, tabsToAdd[[x]]))
}))
shinyがネイティブにできない場合は、これが最適な回避策です。ループでこれを行うためのソリューションもありますか? 'lapply(文字、関数(文字)addToTabset(文字、 'tbSet1'、tabPanel(文字、文字)))'?私は高度なRmdでうまくやっていないし、htmlを適切にレンダリングする方法を教えてください –
それを考え出しました。ループを 'tagList()'にラップする必要があり、javascriptに小さな修正が必要でした(変更されたコードの質問自体を参照) –