1

我正在尝试使用 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 循环来做到这一点?

4

1 回答 1

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>

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-11-10T01:32:45.500 回答