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() がそれを表示します。
チャレンジ
簡単2行の入力を読み込み、パーソナライズされた挨拶メッセージを表示してください。
以下の2つの入力を受け取ります:
- 名前
- 都市名
readline() を使用して両方の入力を読み込み、以下の形式でメッセージを表示してください:
Welcome, [name] from [city]!出力には cat() を使用してください。最後に感嘆符(!)と改行文字 \n を含めるのを忘れないでください。
例えば、入力が Emma と Paris の場合、出力は以下のようになります:
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 を忘れないでくださいこのレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。