Menu
Coddy logo textTech

readline()による入力の読み込み

CoddyのRジャーニー「基礎」セクションの一部 — レッスン 29/78。

これまで、出力を表示する方法を学びました。今度は、ユーザーからの入力を読み取って、プログラムをインタラクティブにする番です。readline() 関数を使用すると、ユーザーが入力した内容を取り込むことができます。

name <- readline()
cat("Hello,", name, "\n")

このコードが実行されると、Rはユーザーが何かを入力してEnterキーを押すのを待ちます。入力された内容はすべてname変数に格納されます。ユーザーが"Alice"と入力した場合、出力はHello, Aliceになります。

知っておくべき重要なことが1つあります。readline() は、ユーザーが数値を入力したとしても、常に文字列を返します。もし誰かが "25" と入力した場合、それは数値の 25 ではなく、テキストの "25" として保存されます。型の変換方法については、次のレッスンで学びます。

readline() を複数回使用することで、複数の入力を読み取ることができます:

first <- readline()
second <- readline()
cat("First:", first, "\n")
cat("Second:", second, "\n")

readline() の呼び出しは、ユーザーからの個別の入力行を待ちます。

文字列の間にスペースを入れずに結合する必要がある場合は、paste0() を使用します。各項目の間にスペースを追加する cat() とは異なり、paste0() は値を直接連結します。

city <- readline()
cat(paste0("Welcome to ", city, "!"), "\n")

ここでは、paste0()! の前に不要なスペースを入れずに Welcome to Paris! という文字列を構築し、その後 cat() がそれを表示します。

challenge icon

チャレンジ

簡単

2行の入力を読み込み、パーソナライズされた挨拶メッセージを表示してください。

以下の2つの入力を受け取ります:

  1. 名前
  2. 都市名

readline() を使用して両方の入力を読み込み、以下の形式でメッセージを表示してください:

Welcome, [name] from [city]!

出力には cat() を使用してください。最後に感嘆符(!)と改行文字 \n を含めるのを忘れないでください。

例えば、入力が EmmaParis の場合、出力は以下のようになります:

Welcome, Emma from Paris!

チートシート

ユーザー入力を読み取るには、readline() 関数を使用します。

name <- readline()
cat("Hello,", name, "\n")

readline() 関数は、ユーザーが何かを入力して Enter キーを押すのを待ちます。入力は文字列として保存されます。

複数の入力を読み取るには、readline() を複数回使用します。

first <- readline()
second <- readline()
cat("First:", first, "\n")
cat("Second:", second, "\n")

注意: readline() は、ユーザーが数値を入力した場合でも、常に文字列を返します。

スペースで区切られた値を出力するには cat() を使用します。値の間にスペースを入れずに結合するには paste0() を使用します。

name <- readline()
cat(paste0("Hello, ", name, "!"))

この例では、paste0()"Hello, "name に格納されている値、および "!" を、余分なスペースなしで1つの文字列に結合します。

自分で試してみよう

# 入力を読み込む
con <- file("stdin", "r")
name <- suppressWarnings(readLines(con, n = 1))
city <- suppressWarnings(readLines(con, n = 1))

# TODO: 以下に挨拶メッセージを表示するコードを記述してください
# cat() を使用して「Welcome, [name] from [city]!」と出力します
# 最後に改行文字 \n を忘れないでください
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

基礎のすべてのレッスン