デフォルト引数
CoddyのRジャーニー「基礎」セクションの一部 — レッスン 51/78。
時には、必要に応じてカスタマイズ可能な「標準的な」動作を関数に持たせたい場合があります。デフォルト引数(Default parameter values)を使用すると、呼び出し側が値を指定しなかった場合に、パラメータがどのような値になるかを定義できます。
デフォルト値は、関数定義の中で = を使用して設定します:
greet <- function(name = "Guest") {
print(paste("Hello,", name))
}
greet()
greet("Alice")出力:
[1] "Hello, Guest"
[1] "Hello, Alice"引数なしで呼び出された場合、関数は "Guest" をデフォルトとして使用します。値を指定すると、デフォルト値が上書きされます。
必須パラメータとオプションパラメータを混在させることができます。デフォルト値を持つパラメータは、デフォルト値を持たないパラメータの後に配置する必要があります:
calculate_total <- function(price, tax_rate = 0.1) {
return(price + (price * tax_rate))
}
print(calculate_total(100))
print(calculate_total(100, 0.2))出力:
[1] 110
[1] 120ここでは、priceは必須ですが、tax_rateのデフォルト値は10%です。これにより、関数に柔軟性が生まれます。一般的なケースでは簡単に使用でき、必要に応じてカスタマイズ可能です。
チャレンジ
簡単2つの引数を取るcalculate_shippingという名前の関数を作成してください:
weight- パッケージの重量(必須)rate- 重量単位あたりのコスト(任意、デフォルトは5)
この関数は、weight * rateとして計算される送料を返す必要があります。
2行の入力を受け取ります:
- 重量の値
- レートの値、または
defaultという単語
2番目の入力がdefaultの場合は、重量のみを指定して(デフォルトのレートを使用して)関数を呼び出します。それ以外の場合は、重量と提供されたレートの両方を指定して関数を呼び出します。
返された結果を出力してください。
例えば、入力が以下の場合:
10
default出力は以下のようになります:
[1] 50入力が以下の場合:
10
3出力は以下のようになります:
[1] 30チートシート
関数の定義で = を使用して、デフォルトの引数値を設定できます:
greet <- function(name = "Guest") {
print(paste("Hello,", name))
}
greet() # デフォルトを使用: "Hello, Guest"
greet("Alice") # デフォルトを上書き: "Hello, Alice"必須の引数とオプションの引数を混在させる場合は、デフォルト値を持つ引数を、持たない引数の後に配置します:
calculate_total <- function(price, tax_rate = 0.1) {
return(price + (price * tax_rate))
}
calculate_total(100) # デフォルトの tax_rate を使用: 110
calculate_total(100, 0.2) # カスタムの tax_rate: 120自分で試してみよう
# 入力を読み込む
con <- file("stdin", "r")
weight <- as.numeric(suppressWarnings(readLines(con, n = 1)))
rate_input <- suppressWarnings(readLines(con, n = 1))
close(con)
# TODO: 以下にコードを記述してください
# 1. weight(必須)とrate(任意、デフォルト = 5)を持つcalculate_shipping関数を定義する
# 2. rate_inputが "default" か数値かを確認する
# 3. 関数を適切に呼び出し、結果を出力するこのレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。