Rのデータフレームから、a要素を項目とするul要素を作る(htmltools利用)

a要素を項目とするul要素を、Rのデータフレームから作成する方法について検討しました。

a要素に関するデータフレーム(内容、href属性値、download属性値)をdfとします。

df <- data.frame(contents = c("link1", "link2", "link3"),
                 href     = c("url1", "url2", "url3"),
                 download = c("filename1", "filename2", "filename3"))

今回検討した、a要素を項目とするul要素の作成手順は以下になります。

## a要素のリスト作成
aList <- pmap(df, ~tags$a(list(...)$contents, href = list(...)$href, download = list(...)$download))
## ul要素の作成
tags$ul(map(aList, ~tags$li(.x)))


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

  • R 3.6.1
  • htmltools 0.3.6
  • purrr 0.3.2



背景

こちらの記事で、htmltoolsパッケージを使い、htmlのul要素を作成しました。

私が実際に使うときは、ul要素の項目はリンク(a要素)になることが多いです。
また、リンクの名称やURLはファイルから読み込み、データフレームに格納して使うことが想定されます。

そのため、データフレームに格納されたa要素の情報をもとに、ul要素を作成する方法について検討する運びとなりました。

方針

こちらの記事により、ul要素作成には項目をリスト化すれば良いことが分かりました。

そのため、データフレームからa要素のリストが作れれば、目的は達成できそうです。

データフレームから、a要素を項目とするul要素を作る

まず、データフレームを用意します。
実際に使うときは、ファイルから読み込んだデータフレームになります。

df <- data.frame(contents = c("link1", "link2", "link3"),
                 href     = c("url1", "url2", "url3"),
                 download = c("filename1", "filename2", "filename3"))
df
  contents href  download
1    link1 url1 filename1
2    link2 url2 filename2
3    link3 url3 filename3

a要素のリストを作成します。

library(htmltools)
library(purrr)
aList <- pmap(df, ~tags$a(list(...)$contents, href = list(...)$href, download = list(...)$download))
aList
[[1]]
<a href="url1" download="filename1">link1</a>

[[2]]
<a href="url2" download="filename2">link2</a>

[[3]]
<a href="url3" download="filename3">link3</a>

あとは、こちらの記事どおりにすれば、ul要素は作成できます。

tags$ul(map(aList, ~tags$li(.x)))
<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>

まとめ

a要素を項目とするul要素を、データフレームから作成する方法について検討しました。
だいぶ実践的になったかなと思います。
では。

--
YouTube: ミサキさん

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

コメント

  1. […] こちらの記事を参考に、ul要素を作ります。 […]

  2. […] Rのデータフレームから、a要素を項目とするul要素を作る(htmltools利用) […]