首页 > 解决方案 > 使用带有多个参数的 lapply() 生成 html 代码

问题描述

我正在尝试使用在循环中生成几个 html 段落lapply()。这些段落在 a 中data.frame,并且data.frame有更多列,其中包含段落的详细信息(类、id 等)。我能够只用一个参数生成循环,问题是我想要循环中的多个参数lapply()。有谁知道该怎么做?

data.frame: _

df = data.frame(paragraph = c("paragraph1","paragraph2","paragraph3"),
                class= c("alert", "good", "alert"),
                id= c("id_1","id_2", "id_3"))

目标是获得以下输出:

<div>     
     <p class="alert" id="id_1">paragraph1</p> 
     <p class="good" id="id_2">paragraph2</p> 
     <p class="alert" id="id_3">paragraph3</p> 
</div>

lappy()循环(仅用于一个参数):

library(htmltools)
tags$div(lapply(df$paragraph, function(x){tags$p(class="", id="", x)}))

我该如何做到这一点,以便用列class和中id的数据填充class和?iddf

标签: rhtmltools

解决方案


您可以apply按行使用,并从数据框中指定类、ID 和内容,如下所示。

library(htmltools)

tags$div(apply(df, 1, function(x) {
  tags$p(class = x[["class"]], id = x[["id"]], x[["paragraph"]])
}))

输出

<div>
  <p class="alert" id="id_1">paragraph1</p>
  <p class="good" id="id_2">paragraph2</p>
  <p class="alert" id="id_3">paragraph3</p>
</div>

推荐阅读