R logo

あるvectorの要素を繋げて一つの文字列にしたい場合、str_flatten()paste0()を使う。

どちらも文字列を結合(連結)するための関数だけれど、使い方や挙動にいくつかの違いがある。

str_flatten()

str_flatten() は、stringrパッケージの関数で、ベクトル内の要素を1つの文字列に結合するために使う。

ベクトル内の各要素を、collapseの区切り文字で連結し、1つの文字列として返すのが特徴。

まずは、stringrパッケージをインストールして読み込む。

install.packages("stringr")
library(stringr)

 

str_flatten()の基本構文
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()の基本構文
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() 基本的な文字結合が手軽