使用带有多个参数的lapply生成html代码

问题描述

我正在尝试使用lapply()循环生成多个html段落。这些段落位于data.frame中,并且data.frame包含更多列,其中包含有关这些段落的详细信息(类,标识等)。 我只用一个参数就能产生循环,问题是我想在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的{​​{1}}和id列中的数据填充classid? >

解决方法

您可以按行使用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>