【问题标题】:R Shiny .rmd - loop to generate HTML divsR Shiny .rmd - 循环生成 HTML div
【发布时间】:2019-12-07 01:09:38
【问题描述】:

我正在尝试根据 data.frame 中的数据生成 HTML 项目。 data.frame 将从响应值更改,因此循环也需要响应。

我在逻辑上挣扎。我在闪亮的仪表板中找到了一些示例,但我试图在降价文件中执行此操作。

---
title: "test"
runtime: shiny
output: 
  html_document:
    css: "css/styles.css"
---

### {.flex-container}

```{r echo=FALSE}
renderText({
  df <-  data.frame(symbol = 1:10)
  for (i in 1:nrow(df)) {
     div(class="flex-box", style="background-color:#DeF7E9",paste0(df[i,"symbol"]))
  }  

})

```

我的 css 文件如下所示:

.title {
  visibility: hidden;
}
.flex-box{
  height: 50px;
  width: 50px;
  background-color:#808080;
  margin: 10px;
}

.flex-container {
  display: flex;

}

我是 R 新手,所以请善待..

干杯, 苏迪

编辑:越来越接近:

reactive({

divClass = list()  
df <-  data.frame(symbol = 1:10)
  for (i in 1:nrow(df)) {
     divClass[i] = div(class="flex-box", style="background-color:#DeF7E9",paste0(df[i,"symbol"]))
  }  
output$myboxes <- renderUI(divClass)

})

uiOutput("myboxes")

这会输出一个包含十个 div 的列表作为文本,如下所示: div div div div div div div div div div

【问题讨论】:

    标签: html r loops shiny r-markdown


    【解决方案1】:

    试试这个怎么样

    ### {.flex-container}
    
    ```{r echo=FALSE}
    renderText({
    divClass = list()  
    df <-  data.frame(symbol = 1:10)
      for (i in 1:nrow(df)) {
         divClass[i] = div(class="flex-box", style="background-color:#DeF7E9",paste0(df[i,"symbol"]))
      }  
    divClass
    })
    
    ```
    

    【讨论】:

    • 不渲染,警告:警告在 divClass[i] = div(class= "flex-box", style = "background-color:#DeF7E9", : 要替换的项目数不是替换长度的倍数
    • 我认为这可能与它的输出方式有关。这是我使用闪亮的应用程序逻辑(不是 rmd)stackoverflow.com/questions/51741473/… 能找到的最接近的
    • 参数 1(类型 'list')不能被 'cat' 处理
    • 在您的帮助下越来越近,看看我上面的编辑。
    猜你喜欢
    • 1970-01-01
    • 2019-01-15
    • 1970-01-01
    • 1970-01-01
    • 2015-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多