あるvectorの要素を繋げて一つの文字列にしたい場合、str_flatten()
やpaste0()
を使う。
どちらも文字列を結合(連結)するための関数だけれど、使い方や挙動にいくつかの違いがある。
str_flatten()
str_flatten()
は、stringrパッケージの関数で、ベクトル内の要素を1つの文字列に結合するために使う。
ベクトル内の各要素を、collapseの区切り文字で連結し、1つの文字列として返すのが特徴。
まずは、stringr
パッケージをインストールして読み込む。
install.packages("stringr")
library(stringr)
str_flatten(string, collapse = "")
string
: 文字ベクトル(複数の文字列を含むベクトル)collapse
: 結合時の区切り文字(デフォルトは空文字"")
使い方の例
文字列の連結(区切りなし)
result <- str_flatten(c("Hello", "World", "R"), collapse = "")
print(result)
output
[1] "HelloWorldR"
- 文字ベクトル
c("Hello", "World", "R")
が連結され、1つの文字列「HelloWorldR」になった。
文字列の連結(カンマで区切り)
result <- str_flatten(c("Hello", "World", "R"), collapse = ", ")
output
[1] "Hello, World, R"
- 区切り文字
", "
(カンマとスペース)を指定することで、カンマ区切りの文字列が生成された。
文字ベクトルのNAの扱い
result <- str_flatten(c("Hello", NA, "R"), collapse = ", ")
print(result)
output
[1] "Hello, NA, R"
- NAも文字列 "NA" として扱われる。
str_flatten()のまとめ
操作内容 | コード例 | 結果 |
---|---|---|
ベクトルの結合(区切りなし) | str_flatten(c("A", "B"), "") |
"AB" |
カンマで区切り | str_flatten(c("A", "B"), ", ") |
"A, B" |
NAの扱い | str_flatten(c("A", NA, "C"), ", ") |
"A, NA, C" |
改行で区切り | str_flatten(c("A", "B"), "\n") |
"A\nB" |
paste0()
paste0()
は、Rの標準関数 (base R) で、文字列を連結するための関数。
paste()
の簡略化バージョンで、デフォルトの区切り文字が ""(空文字) になっている。
paste0(..., collapse = "")
...
: 連結する文字列のベクトル(1つの文字列でも、複数の文字列でもOK)collapse
: ベクトル内の要素を結合するときの区切り文字(デフォルトはNULL)
使い方の例
文字列の連結
result <- paste0("Hello", "World", "R")
print(result)
output
[1] "HelloWorldR"
- Hello, World, R という3つの文字列が、空白なしで連結された。
ベクトル内の文字列を連結する(collapseあり)
result <- paste0(c("Hello", "World", "R"), collapse = ", ")
print(result)
output
[1] "Hello, World, R"
- collapseオプションを指定することで、カンマ区切りの文字列が生成された。
ベクトルの結合(区切りなし)
result <- paste0(c("Hello", "World", "R"))
print(result)
output
[1] "Hello" "World" "R"
- collapseを指定しない場合、paste0()は要素ごとに結合しない。
NAの扱い
result <- paste0(c("Hello", NA, "R"), collapse = ", ")
print(result)
output
[1] "Hello, , R"
NA
は空の文字列として処理される(NAは無視される)。
paste0()のまとめ
paste0()は基本的な文字列の結合に使う。
操作内容 | コード例 | 結果 |
---|---|---|
文字列の連結 | paste0("A", "B") |
"AB" |
カンマで区切り | paste0(c("A", "B"), collapse = ", ") |
"A, B" |
NAの扱い | paste0(c("A", NA, "C"), collapse = ", ") |
"A, , C" |
複数の文字列 | paste0("A", "B", "C") |
"ABC" |
str_flatten() と paste0() の違い
str_flatten() と paste0() は、文字列の結合に使う関数だけれど、使い方や挙動にいくつかの違いがある。
機能 | str_flatten() | paste0() |
---|---|---|
パッケージ | stringr | base R (標準関数) |
結合の目的 | ベクトルの要素を1つの文字列に | 複数の引数を結合 |
collapse | ✅ 使える(必須) | ✅ 使える(オプション) |
NAの扱い | "NA" として扱う | NAは無視される |
複数の文字の結合 | ❌ 使えない | ✅ 使える (paste0("A", "B")) |
ベクトル全体を結合 | ✅ 可能 | ✅ 可能 |
可読性 | ✅ わかりやすい | ⚠️ ややわかりにくい |
どっちを使うべき?
複数の文字列を1つに結合するならpaste0()だけど、文字ベクトルの内部を結合する場合はstr_flatten()が便利。
使いたい機能 | おすすめの関数 | 理由 |
---|---|---|
複数の文字列を1つに結合 | paste0() |
複数の引数の結合が直感的 |
文字ベクトルを結合 | str_flatten() |
ベクトルの要素を1つの文字列にする |
NAを考慮した結合 | str_flatten() |
NAがそのまま"NA"として出力される |
シンプルな操作がしたい | paste0() |
基本的な文字結合が手軽 |