R-functions
R-関数
関数は、特定のタスクを実行するためにまとめられた一連のステートメントです。 Rには多数の組み込み関数があり、ユーザーは独自の関数を作成できます。
Rでは、関数はオブジェクトであるため、Rインタープリターは、関数がアクションを実行するために必要な引数とともに、制御を関数に渡すことができます。
次に、関数はそのタスクを実行し、インタープリターに制御を返します。また、他のオブジェクトに格納される可能性のある結果を返します。
関数定義
R関数は、キーワード function を使用して作成されます。 R関数定義の基本的な構文は次のとおりです-
function_name <- function(arg_1, arg_2, ...) {
Function body
}
機能コンポーネント
関数のさまざまな部分は-
- 関数名-これは関数の実際の名前です。 この名前のオブジェクトとしてR環境に保存されます。
- 引数-引数はプレースホルダーです。 関数が呼び出されると、引数に値を渡します。 引数はオプションです。つまり、関数には引数が含まれない場合があります。 また、引数にはデフォルト値を設定できます。
- 関数本体-関数本体には、関数の動作を定義するステートメントのコレクションが含まれています。
- 戻り値-関数の戻り値は、評価される関数本体の最後の式です。
Rには、最初に定義せずにプログラムで直接呼び出すことができる多くの*組み込み*関数があります。 また、*ユーザー定義*関数と呼ばれる独自の関数を作成して使用することもできます。
組み込み関数
組み込み関数の簡単な例は、* seq()、 mean()、 max()、 sum(x)、および paste(…)*などです。 これらは、ユーザー作成プログラムによって直接呼び出されます。 https://cran.r-project.org/doc/contrib/Short-refcard.pdf [最も広く使用されているR関数]を参照できます。
# Create a sequence of numbers from 32 to 44.
print(seq(32,44))
# Find mean of numbers from 25 to 82.
print(mean(25:82))
# Find sum of numbers frm 41 to 68.
print(sum(41:68))
上記のコードを実行すると、次の結果が生成されます-
[1] 32 33 34 35 36 37 38 39 40 41 42 43 44
[1] 53.5
[1] 1526
ユーザー定義関数
Rでユーザー定義関数を作成できます。 これらはユーザーが望むものに固有のものであり、一度作成すると組み込み関数のように使用できます。 以下は、関数がどのように作成され使用されるかの例です。
# Create a function to print squares of numbers in sequence.
new.function <- function(a) {
for(i in 1:a) {
b <- i^2
print(b)
}
}
関数を呼び出す
# Create a function to print squares of numbers in sequence.
new.function <- function(a) {
for(i in 1:a) {
b <- i^2
print(b)
}
}
# Call the function new.function supplying 6 as an argument.
new.function(6)
上記のコードを実行すると、次の結果が生成されます-
[1] 1
[1] 4
[1] 9
[1] 16
[1] 25
[1] 36
引数なしで関数を呼び出す
# Create a function without an argument.
new.function <- function() {
for(i in 1:5) {
print(i^2)
}
}
# Call the function without supplying an argument.
new.function()
上記のコードを実行すると、次の結果が生成されます-
[1] 1
[1] 4
[1] 9
[1] 16
[1] 25
引数値を使用した関数の呼び出し(位置および名前による)
関数呼び出しの引数は、関数で定義されているのと同じ順序で指定するか、別の順序で指定しますが、引数の名前に割り当てることができます。
# Create a function with arguments.
new.function <- function(a,b,c) {
result <- a *b + c
print(result)
}
# Call the function by position of arguments.
new.function(5,3,11)
# Call the function by names of the arguments.
new.function(a = 11, b = 5, c = 3)
上記のコードを実行すると、次の結果が生成されます-
[1] 26
[1] 58
デフォルト引数で関数を呼び出す
関数定義で引数の値を定義し、引数を指定せずに関数を呼び出してデフォルトの結果を取得できます。 ただし、引数の新しい値を指定してこのような関数を呼び出し、デフォルト以外の結果を取得することもできます。
# Create a function with arguments.
new.function <- function(a = 3, b = 6) {
result <- a* b
print(result)
}
# Call the function without giving any argument.
new.function()
# Call the function with giving new values of the argument.
new.function(9,5)
上記のコードを実行すると、次の結果が生成されます-
[1] 18
[1] 45
関数の遅延評価
関数への引数は遅延評価されます。つまり、関数本体で必要な場合にのみ評価されます。
# Create a function with arguments.
new.function <- function(a, b) {
print(a^2)
print(a)
print(b)
}
# Evaluate the function without supplying one of the arguments.
new.function(6)
上記のコードを実行すると、次の結果が生成されます-
[1] 36
[1] 6
Error in print(b) : argument "b" is missing, with no default