0Pricing
R Academy · レッスン

paste()とpaste0()による文字列の作成

pasteとpaste0を使い、区切り文字を挿入して文字列を連結します。

「paste()とpaste0()による文字列の作成」はCoddyKit上の無料R Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはR Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 R Academyコースには全4レッスンが含まれています。

paste()の基本

paste()は引数を文字列に変換し、区切り文字で連結します。デフォルトの区切り文字は単一のスペース' 'です。base Rで最も柔軟な文字列構築関数です。

paste('Hello', 'World')
paste('User', 'ID', ':', 42)
paste('R', 'version', '4.3.1')

paste0() — 区切り文字なしのショートカット

paste0()はpaste(..., sep='')と同じです。文字列を区切り文字なしで連結します。ファイルパス、列名、URLをプログラムで構築するときに、まず使う関数です。

paste0('file_', 1:5, '.csv')
paste0('col_', c('a', 'b', 'c'))
paste0('/home/user/', 'data.csv')

sepで区切り文字を変更する

sep引数は、各引数の間に何を配置するかを制御します。CSVの行、ファイルパス、日付文字列など、区切り文字を含む出力の構築に使います。

# Hyphen-separated date
paste('2024', '05', '29', sep = '-')
# Slash-separated path
paste('home', 'user', 'docs', sep = '/')
# Comma-separated
paste('Alice', 'Bob', 'Carol', sep = ', ')

ベクトル化されたpaste()

paste()はベクトル化されています。ベクトルを渡すと、位置ごとに要素を対応付けて連結します(必要に応じて短いベクトルはリサイクルされます)。結果の長さは、入力ベクトルのうち最も長いものと同じです。

labels <- c('Item', 'Item', 'Item')
numbers <- c(1, 2, 3)
paste(labels, numbers)
# Shorter form using recycling
paste('Item', 1:5)

ベクトルを1つの文字列にまとめる

collapse引数を使うと、結果のベクトルのすべての要素を、指定した値を区切り文字として1つの文字列に連結できます。collapseなしでは文字ベクトルになり、指定すると1つの文字列になります。

fruits <- c('apple', 'banana', 'cherry')
# Without collapse: character vector of length 3
paste('I like', fruits)
# With collapse: single string
paste('I like', fruits, collapse = ' and ')

sepとcollapseを同時に使う

同じ呼び出しでsepとcollapseの両方を使えます。まずsepで引数のベクトルを要素ごとに連結し、次にcollapseで結果の文字ベクトルを1つの文字列にまとめます。

first <- c('John', 'Jane', 'Bob')
last  <- c('Doe', 'Smith', 'Brown')
# sep joins first+last, collapse joins all three names
paste(first, last, sep = ' ', collapse = ', ')

変数名の構築にpaste0()を使う

paste0()は、区切り文字による余計な文字を入れずに、変数名や列名、ファイルパス、SQL風の文字列をプログラムで構築するためによく使われます。

# Build column names
col_names <- paste0('Q', 1:5, '_score')
print(col_names)
# Build file paths
years <- 2020:2023
files <- paste0('data/report_', years, '.csv')
print(files)

paste()での数値の型変換

paste()は、数値や論理値などを自動的に文字列へ変換します。先にas.character()を呼び出す必要はありません。paste()が透過的に処理します。

n <- 42
pi_val <- 3.14159
flag <- TRUE
paste('Count:', n)
paste('Pi =', pi_val)
paste('Active:', flag)
paste0('n=', n, ' pi=', round(pi_val, 2))

CSV形式の行を作成する

ベクトル化されたpaste()とcollapse = ','を組み合わせると、外部パッケージを読み込まずに、データフレームから簡単なCSV出力文字列を作成できます。

names_vec  <- c('Alice', 'Bob', 'Carol')
scores_vec <- c(85, 92, 78)
rows <- paste(names_vec, scores_vec, sep = ',')
cat(paste(rows, collapse = '\n'))

paste()でのNA処理

多くのR関数とは異なり、paste()はNAを欠損値のまま伝播させず、リテラル文字列'NA'に変換します。便利な一方で、欠損値が暗黙に処理されることを期待する場合は注意が必要です。

x <- c('Hello', NA, 'World')
paste(x, '!')
# NA becomes the string 'NA'
result <- paste0('Value: ', NA)
print(result)
print(class(result))

実践パターン:レポートでpaste()を使う

Pasteは、人が読みやすいレポート用の文字列を生成するときに特に役立ちます。paste0()、round()、paste()とcollapseを組み合わせて、データから要約文を作成できます。

mean_score <- 83.7
n_students  <- 28
high_score  <- 99
msg <- paste0(
  'Class summary: ', n_students, ' students, ',
  'mean score ', round(mean_score, 1), ', ',
  'top score ', high_score, '.'
)
cat(msg)

確認問題

paste()のcollapse引数は何をしますか。

paste()とpaste0():要点

paste()とpaste0()の要点:

  • paste(a, b)はスペースで連結し、paste0(a, b)は区切り文字なしで連結します
  • sepは各引数の間に置く文字列を制御します
  • collapseは結果のベクトルを1つの文字列にまとめます
  • どちらの関数もベクトル化されており、短い引数はリサイクルされます
  • NAはリテラル文字列'NA'に変換されます
  • 数値と論理値は自動的に文字列へ型変換されます
# sep vs collapse at a glance
x <- c('a', 'b', 'c')
y <- c(1, 2, 3)
cat('paste (sep=-)  :', paste(x, y, sep = '-'), '\n')
cat('paste (collapse):', paste(x, collapse = '+'), '\n')
cat('paste0          :', paste0(x, y), '\n')

よくある質問

「paste()とpaste0()による文字列の作成」レッスンは無料ですか?

はい。「paste()とpaste0()による文字列の作成」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、R Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 R Academyコースには全4レッスンが含まれています。

「paste()とpaste0()による文字列の作成」で何を学びますか?

pasteとpaste0を使い、区切り文字を挿入して文字列を連結します。 ブラウザで直接実行するハンズオンコードでR Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

R Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのR Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。

「paste()とpaste0()による文字列の作成」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このR Academyレッスンでコードを書いて実行できますか?

はい。すべてのR Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. paste()とpaste0()による文字列の作成
  2. sprintf()による整形出力
  3. cat()とprint()による出力表示
  4. 文字列のパディングと配置
← R Academyに戻る