R Academy · レッスン

sprintf()による整形出力

sprintfのフォーマット文字列で小数点以下の桁数、余白、配置を制御します。

レッスン 2/413 ステップ

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

sprintf()の基本

sprintf()は、プレースホルダーを含む書式文字列を使って文字列を整形します。Cのprintfとまったく同じように動作します。最初の引数が書式テンプレートで、後続の引数が順番にプレースホルダーを埋めます。

sprintf('There are %d items', 5)
sprintf('Hello, %s!', 'Alice')
sprintf('Price: %.2f', 9.999)

整数と文字列のプレースホルダー

%dは整数を、%sは文字列を、%fは浮動小数点数を整形します。各プレースホルダーは、対応する引数で順番に置き換えられます。

name <- 'Bob'
age  <- 34
score <- 88.5
sprintf('%s is %d years old with score %.1f', name, age, score)

小数点以下の桁数を制御する

%.2fは、小数点以下2桁ちょうどの浮動小数点数として整形することを意味します。.とfの間の数値が精度を指定します。通貨、パーセンテージ、科学的な値の表示に適しています。

pi_val <- 3.14159265
sprintf('%.0f', pi_val)
sprintf('%.2f', pi_val)
sprintf('%.5f', pi_val)
sprintf('$%.2f', 1234.5)

フィールド幅とパディング

書式指定子の文字の前に数値を置くと、フィールドの最小幅を設定できます。値はデフォルトで右寄せになり、左側がスペースで埋められます。プレーンテキストのレポートで列をそろえるのに便利です。

items <- c('Pen', 'Notebook', 'Stapler')
prices <- c(1.5, 4.99, 7.25)
for (i in seq_along(items)) {
  cat(sprintf('%-10s $%6.2f\n', items[i], prices[i]))
}

-フラグによる左寄せ

幅を示す数値の前に-を付けると、フィールド内でテキストを左寄せできます。固定幅のテキスト出力で左寄せの列を作成する標準的な方法です。

# Right-aligned (default)
sprintf('%10s', 'hi')
# Left-aligned
sprintf('%-10s', 'hi')
# Practical: side-by-side
cat(sprintf('%-8s %5d\n', 'Alice', 42))
cat(sprintf('%-8s %5d\n', 'Bob', 7))

%eと%gによる指数表記

%eは指数表記を強制します(例:1.23e+04)。%gは%fと%eのうち短い方を自動的に選択します。値の桁数が大きく異なる場合に便利です。

x <- 0.000123456
y <- 123456789
sprintf('%e', x)
sprintf('%e', y)
sprintf('%g', x)
sprintf('%g', y)

0フラグによるゼロ埋め

幅の前に0を付けると、スペースではなく先頭のゼロで数値を埋めます。ゼロ埋めしたID、日付、ファイル番号の作成によく使われます。

ids <- c(1, 12, 123, 1234)
sprintf('ID_%05d', ids)
# Date parts
sprintf('%04d-%02d-%02d', 2024, 5, 7)

パーセンテージの整形

比率をパーセンテージで表示するには、100を掛けて%.1f%%を使います。二重の%%によって、出力にリテラルのパーセント記号が挿入されます(単一の%はプレースホルダーの開始として解釈されます)。

pass_rate <- 0.8743
sprintf('Pass rate: %.1f%%', pass_rate * 100)
growth <- 0.0523
sprintf('Growth: +%.2f%%', growth * 100)

sprintf()はベクトル化されている

sprintf()の引数にベクトルを渡すと、ベクトルの各要素を自動的に処理し、要素ごとに1つの整形済み文字列を返します。書式文字列自体はリサイクルされます。

products <- c('Apple', 'Banana', 'Cherry')
prices   <- c(0.99, 0.59, 2.49)
sprintf('%-8s costs $%.2f', products, prices)

複数のプレースホルダーと引数

各プレースホルダーは、順番に1つの引数を消費します。1つの書式文字列で%d、%f、%sを自由に組み合わせられ、すべてのベクトル引数は最も長い長さに合わせてリサイクルされます。

months <- c('Jan', 'Feb', 'Mar')
revenue <- c(12500, 9800, 15300)
growth  <- c(0.05, -0.12, 0.18)
sprintf('%s: $%d (growth: %+.1f%%)',
        months, revenue, growth * 100)

sprintf()とpaste() — 使い分け

単純な連結にはpaste()やpaste0()を使い、数値を正確に整形する必要がある場合(小数点以下の桁数、幅、パディングなど)にはsprintf()を使います。sprintf()はより冗長ですが、数値の見た目を完全に制御できます。

val <- 1234567.891
# paste: no formatting control
paste('Total:', val)
# sprintf: formatted as currency
sprintf('Total: $%,.2f', val)
# With manual formatting
sprintf('Total: $%15.2f', val)

確認問題

sprintf()で、出力にリテラルのパーセント記号%を挿入する書式コードはどれですか。

sprintf()の要点

sprintf()の要点:

  • %dは整数、%fは浮動小数点数、%sは文字列、%eは指数表記、%gは自動選択です
  • %.2fは小数点以下2桁、%10.2fは幅10で小数点以下2桁を意味します
  • %-10sは10文字のフィールドで左寄せ、%05dは5桁になるようゼロ埋めします
  • %%は出力中のリテラルのパーセント記号です
  • sprintf()は引数に対してベクトル化されています
  • 数値の整形精度が重要な場合は、paste()よりsprintf()を優先します
x <- 0.87654
cat(sprintf('Default f  : %f\n', x))
cat(sprintf('2 decimals : %.2f\n', x))
cat(sprintf('Percentage : %.1f%%\n', x * 100))
cat(sprintf('Scientific : %e\n', x))
cat(sprintf('Auto       : %g\n', x))
無料で開始

AI チューターと学ぶ R — 無料

ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。

コース
43
レッスン
159

よくある質問

「sprintf()による整形出力」レッスンは無料ですか?

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

「sprintf()による整形出力」で何を学びますか?

sprintfのフォーマット文字列で小数点以下の桁数、余白、配置を制御します。 ブラウザで直接実行するハンズオンコードでR Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

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

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

「sprintf()による整形出力」レッスンにはどのくらい時間がかかりますか?

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

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

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

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

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