R×stringr::str_glue_data リストまたはデータフレームの値を用いた文字列の埋め込み

R言語のstringrパッケージに含まれているstr_glue_data()関数について解説します。この関数は、「データフレームやリストの列名を、そのまま文字列に埋め込みたい」ときに使える関数です。通常のstr_glue()は環境変数やオブジェクト名を指定しますが、str_glue_data()はデータソース(データフレームなど)を直接流し込めるのが特徴です。str_glue()は、Pythonでいうところのformat()やf文字列のことです。

stringrパッケージは、文字列データを操作するための強力で便利な関数を多く取り扱っています。また、Rのデータサイエンス向け主要パッケージ群であるtidyverseパッケージにも含まれています。

概要

str_glue_data()は、リストまたはデータフレームの値を用いて、文字列を埋め込むための関数です。

使い方


str_glue_data(.x, ..., .sep = "", .envir = parent.frame(), .na = "NA")

引数

.x

値を検索するために使用される環境、リスト、またはデータ フレームを指定します。

sep = “”

要素を区切るために使用されるセパレーターの文字列を指定します。

.envir = parent.frame()

各式を評価する環境を指定します。
式は左から右に評価されます。.xが環境の場合、式はその環境で評価され、.envirは無視されます。NULLが渡された場合は、emptyenv()と同等になります。

.na = “NA”

NA値を置き換える値を指定します。
NULL欠損値が伝播された場合、つまりNA結果の場合はNA出力が発生します。それ以外の場合は、値は.naの値に置き換えられます。

戻り値

最長入力と同じ長さの文字ベクトル。

使用例

準備

あらかじめ、tidyverseパッケージまたはstringrパッケージを読み込んでおきます。


# library(tidyverse)でもよい
library(stringr)

文字列埋め込み

リストまたはデータフレームの値を用いて、文字列埋め込みには次のようにします。


mtcars %>%
  str_glue_data("{rownames(.)} : mpg = {mpg}")

Mazda RX4 : mpg = 21
Mazda RX4 Wag : mpg = 21
Datsun 710 : mpg = 22.8
Hornet 4 Drive : mpg = 21.4
Hornet Sportabout : mpg = 18.7
Valiant : mpg = 18.1
Duster 360 : mpg = 14.3
Merc 240D : mpg = 24.4
Merc 230 : mpg = 22.8
Merc 280 : mpg = 19.2
Merc 280C : mpg = 17.8
Merc 450SE : mpg = 16.4
Merc 450SL : mpg = 17.3
Merc 450SLC : mpg = 15.2
Cadillac Fleetwood : mpg = 10.4
Lincoln Continental : mpg = 10.4
Chrysler Imperial : mpg = 14.7
Fiat 128 : mpg = 32.4
Honda Civic : mpg = 30.4
Toyota Corolla : mpg = 33.9
Toyota Corona : mpg = 21.5
Dodge Challenger : mpg = 15.5
AMC Javelin : mpg = 15.2
Camaro Z28 : mpg = 13.3
Pontiac Firebird : mpg = 19.2
Fiat X1-9 : mpg = 27.3
Porsche 914-2 : mpg = 26
Lotus Europa : mpg = 30.4
Ford Pantera L : mpg = 15.8
Ferrari Dino : mpg = 19.7
Maserati Bora : mpg = 15
Volvo 142E : mpg = 21.4

参考文献