R言語のstringrパッケージに含まれているstr_glue_data()関数について解説します。この関数は、「データフレームやリストの列名を、そのまま文字列に埋め込みたい」ときに使える関数です。通常のstr_glue()は環境変数やオブジェクト名を指定しますが、str_glue_data()はデータソース(データフレームなど)を直接流し込めるのが特徴です。str_glue()は、Pythonでいうところのformat()やf文字列のことです。
stringrパッケージは、文字列データを操作するための強力で便利な関数を多く取り扱っています。また、Rのデータサイエンス向け主要パッケージ群であるtidyverseパッケージにも含まれています。
概要
str_glue_data()は、リストまたはデータフレームの値を用いて、文字列を埋め込むための関数です。
値を検索するために使用される環境、リスト、またはデータ フレームを指定します。 要素を区切るために使用されるセパレーターの文字列を指定します。 各式を評価する環境を指定します。 NA値を置き換える値を指定します。 最長入力と同じ長さの文字ベクトル。 あらかじめ、 リストまたはデータフレームの値を用いて、文字列埋め込みには次のようにします。
str_glue_data(.x, ..., .sep = "", .envir = parent.frame(), .na = "NA")
引数
式は左から右に評価されます。.xが環境の場合、式はその環境で評価され、.envirは無視されます。NULLが渡された場合は、emptyenv()と同等になります。
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
参考文献