【问题标题】:Using for loops to generate html content使用 for 循环生成 html 内容
【发布时间】:2020-11-09 17:01:03
【问题描述】:

我正在尝试使用 for 循环生成 html 内容,但我遇到了内容在 html 中的外观问题。

假设我有一个 Rhtml 模板,我想在 for 循环中生成段落:

<!DOCTYPE html>
<html lang="en">
<head>
</head>
<body>
<!--begin.rcode, echo=FALSE, message=FALSE, warning=FALSE
library(htmltools)
paragraphs = c("Paragraph1","Paragraph2","Paragraph3")
tags$div(
  for(i in paragraphs){
    print(tags$p(i))
    }
  )
end.rcode-->
</body>
</html>

问题是html输出是这样的:

## <p>Paragraph1</p>
## <p>Paragraph2</p>
## <p>Paragraph3</p>

而我需要的只是三个普通的 html 段落。 如何使用 for 循环做到这一点?

【问题讨论】:

    标签: r htmltools


    【解决方案1】:

    将循环移到tags$div之外。

    <!DOCTYPE html>
    <html lang="en">
    <head>
    </head>
    <body>
    <!--begin.rcode, echo=FALSE, message=FALSE, warning=FALSE
    library(htmltools)
    paragraphs = c("Paragraph1","Paragraph2","Paragraph3")
    p <- list()
    for(i in paragraphs){
      p <- c(p, list(tags$p(i)))
    }
    tags$div(p)
    end.rcode-->
    </body>
    </html>
    

    这也可以写成purr::map

    <!DOCTYPE html>
    <html lang="en">
    <head>
    </head>
    <body>
    <!--begin.rcode, echo=FALSE, message=FALSE, warning=FALSE
    library(htmltools)
    paragraphs = c("Paragraph1","Paragraph2","Paragraph3")
    tags$div(purrr::map(paragraphs, tags$p))
    end.rcode-->
    </body>
    </html>
    

    【讨论】:

      猜你喜欢
      • 2020-02-03
      • 2015-04-01
      • 2015-02-03
      • 2012-01-21
      • 2013-12-16
      • 1970-01-01
      • 1970-01-01
      • 2019-03-09
      • 2021-01-14
      相关资源
      最近更新 更多