如何迭代形成文本行以在R Shiny应用程序中显示?

时间:2018-09-20 21:59:42

标签: r shiny

在我的Rshiny应用程序中,我需要在仪表板上显示句子(字符串)。这些句子是在另一个过程中创建的,并存储在名为session1=com.jcraft.jsch.Session@6fa7ce4 session2=undefined session3=undefined 的变量中。我需要根据sentences中存储的字符串数形成多行并将其显示在可视化仪表板上。作为一种愚蠢的编码实践,我执行了以下操作:

sentences

因此if (length(sentences) == 1){ lines_to_display <- helpText(tags$ol(tags$li(sentences[[1]]))) } else if (length(sentences) == 2){ lines_to_display <- helpText(tags$ol(tags$li(sentences[[1]]), tags$li(sentences[[2]]) )) } else if (length(sentences) == 3){ lines_to_display <- helpText(tags$ol(tags$li(sentences[[1]]), tags$li(sentences[[2]]), tags$li(sentences[[3]]) )) } else if (length(sentences) == 4){ lines_to_display <- helpText(tags$ol(tags$li(sentences[[1]]), tags$li(sentences[[2]]), tags$li(sentences[[3]]), tags$li(sentences[[4]]) )) } 将包含要显示的字符串,并将它们用于:

lines_to_display

这很愚蠢,因为长度(句子)可能达到10。是否有一种聪明的方法来迭代conditional_panel_citys <- conditionalPanel( "$('li.active a').first().html()==='city data visualization'", sidebarPanel( width = 3, sidebar_style, helpText("Our key observations:"), lines_to_display) 并将所有字符串逐行加载到sentences中?

1 个答案:

答案 0 :(得分:1)

for循环可能是您的朋友,请参见下文

Test<-list("AAAAAAA",
           "BBBBBBBB",
           "CCCCCCC",
           "DDDDDDD",
           "EEEEEEEE",
           "FFFFFFFF")

lines_to_display<-list()

Length<-length(Test)

for( i in 1:Length){
  Testy<-Test[[i]]
  lines_to_display[[i]]<- helpText(tags$ol(tags$li(Testy)))}  


> lines_to_display
[[1]]
<span class="help-block">
  <ol>
    <li>AAAAAAA</li>
  </ol>
 </span>

[[2]]
<span class="help-block">
  <ol>
    <li>BBBBBBBB</li>
  </ol>
</span>

[[3]]
<span class="help-block">
  <ol>
    <li>CCCCCCC</li>
  </ol>
</span>

[[4]]
<span class="help-block">
  <ol>
    <li>DDDDDDD</li>
  </ol>
 </span>

依此类推...