Rで複数のHTML要素をひとまとめにして、文字列として出力する(htmltools利用)

複数のHTML要素をひとまとめにして、文字列として出力する方法を説明します。

tagList関数を使うと、複数のHTML要素をひとまとめにできます。
あとは、as.characterで文字列にし、出力すれば完了です。

tagList(h2("リンク一覧"),
        p("こちらがリンク一覧です。"),
        ulElm) %>%
    as.character %>%
    cat(file = "output.txt")


この記事で使用したRとパッケージのバージョンを記載しておきます。
バージョンが異なると、動作や表示も若干異なる場合があるからです。

  • R 3.6.1
  • htmltools 0.3.6
  • purrr 0.3.2



背景

これまでの記事でRのhtmltoolsパッケージを使い、a要素・ul要素・table要素を作成してきました。

元々の目的はウェブページ作成です。

そのため、各要素をテキスト形式で出力、それも、ある程度まとめて出力しようと思います。

出力さえできれば、あとは、出力したテキストをhtmlファイルやブログに貼り付けることで、ウェブページを作成できますよね。

複数のHTML要素をひとまとめにして、文字列として出力する

ひとまとめにするHTML要素は、h2、p、ul要素とします。

h2、p要素は簡単なものを利用するので、あとで作ります。

こちらの記事を参考に、ul要素を作ります

library(htmltools)
library(purrr)

df <- data.frame(contents = c("link1", "link2", "link3"),
                 href     = c("url1", "url2", "url3"),
                 download = c("filename1", "filename2", "filename3"))
aList <- pmap(df, ~tags$a(list(...)$contents, href = list(...)$href, download = list(...)$download))
ulElm <- tags$ul(map(aList, ~tags$li(.x)))
ulElm
<ul>
  <li>
    <a href="url1" download="filename1">link1</a>
  </li>
  <li>
    <a href="url2" download="filename2">link2</a>
  </li>
  <li>
    <a href="url3" download="filename3">link3</a>
  </li>
</ul>

では、h2, p, ul要素をひとまとめにします

htmltoolsパッケージのtagList関数を使えば、複数の要素をひとまとめにできます。

tagList(h2("リンク一覧"),
        p("こちらがリンク一覧です。"),
        ulElm)
<h2>リンク一覧</h2>
<p>こちらがリンク一覧です。</p>
<ul>
  <li>
    <a href="url1" download="filename1">link1</a>
  </li>
  <li>
    <a href="url2" download="filename2">link2</a>
  </li>
  <li>
    <a href="url3" download="filename3">link3</a>
  </li>
</ul>

tagList関数の引数は、リストでまとめてもOKです。

tagList(list(h2("リンク一覧"), p("こちらがリンク一覧です。"), ulElm))

あとは、文字列にして出力すれば完了です。

tagList(h2("リンク一覧"),
        p("こちらがリンク一覧です。"),
        ulElm) %>%
    as.character %>%
    cat(file = "output.txt")

%>%演算子については、こちらの記事で解説しています。
ご参考まで。

Rのコードを見やすくする(%>%演算子利用) | ミサキのノート
昨日の記事に書いたRのコードを、%>%(パイプ)演算子を使って見やすく書き直しました。 修正前 ## リストからテーブル要素を生成 tags$table(pmap(dl, ~tags$tr(map(list(...), ~tags$t

まとめ

複数のHTML要素をひとまとめにして、文字列として出力する方法を説明しました。
リストが沢山あるウェブページ作成などで、役立ちそうですね。
では。

--
YouTube: ミサキさん

問い合わせ先
Mail: caprico.aries@gmail.com
Twitter: https://twitter.com/caprico_aries(無言フォローもお気軽に)

コメント

  1. […] […]