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()呼び出しは、ユーザーからの入力の個別の行を待ちます。
cat() を使ってテキストと変数を組み合わせる場合、カンマで区切られた各項目の間にはスペースが入ります。単語に句読点を直接付ける場合など、スペースを入れずにテキストを結合したいこともあります。そのようなときに便利なのが paste0() です。これは、文字列の間に区切り文字を入れずに連結します:
city <- readline()
cat("Welcome to", paste0(city, "!"), "\n")ここでは、paste0(city, "!")はcityの値と"!"を空白なしで結合するため、ユーザーが「Paris」と入力すると、出力は次のようになります: Welcome to Paris!
チャレンジ
簡単入力された2行を読み取り、個人向けのあいさつメッセージを表示します。
2つの入力を受け取ります:
- first 名
- city 名
readline() を使用して両方の入力を読み取り、次の形式でメッセージを表示します:
Welcome, [name] from [city]!cat() を使用して出力を生成します。末尾に感嘆符と改行文字 \n を必ず含めてください。
たとえば、入力が Emma と Paris の場合、出力は次のようになります:
Welcome, Emma from Paris!自分で試してみよう
# 入力を読み取る
con <- file("stdin", "r")
name <- suppressWarnings(readLines(con, n = 1))
city <- suppressWarnings(readLines(con, n = 1))
# TODO: 挨拶メッセージを表示するコードを以下に書いてください
# cat() を使って出力する: Welcome, [name] from [city]!
# 末尾の改行文字 \n を忘れないでくださいこのレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
基礎のすべてのレッスン
自分で練習してみよう: Rオンラインコンパイラ