آموزش توابع در برنامه نویسی R
یک تابع؛ مجموعه ای از دستورات است که برای انجام یک وظیفه ی خاص؛ در کنار هم سازماندهی شده اند. زبان برنامه نویسی R تعداد زیادی تابع داخلی دارد و کاربر می تواند توابع خود را نیز ایجاد کند.
در زبان برنامه نویسی R، یک تابع در واقع یک شیء است؛ به صورتی که مفسر R قادر است کنترل را همراه با آرگومان هایی که ممکن است برای آن که تابع بتواند اقدامات مربوطه را انجام بدهد؛ ضروری باشد؛ به تابع منتقل کند.
تابع به نوبه خود، وظایف مربوط به خودش را انجام می دهد و کنترل و نیز هر نتیجه ای که ممکن است در اشیاء دیگر ذخیره بشود را به مفسر منتقل می کند.
تعریف تابع
یک تابع R با استفاده از کلید واژه function ایجاد شده است. سینتکس پایه ی تعریف تابع R به صورت زیر می باشد:
function_name <- function(arg_1, arg_2, …) {
Function body
}
مؤلفه های تابع
بخش های متفاوت یک تابع به صورت زیر هستند:
- نام تابع – این نام واقعی تابع است. در محیط R به عنوان یک شیء با این نام ذخیره می شود.
- آرگومان ها – یک آرگومان در واقع یک پلیس هولدر است. زمانی که یک تابع فراخوانی می شود؛ شما یک مقدار را به یک آرگومان منتقل می کنید. آرگومان ها اختیاری هستند؛ یعنی یک تابع ممکن است هیچ آرگومانی را شامل نشود. همچنین آرگومان ها می توانند مقادیر پیش فرضی داشته باشند.
- بدنه تابع – بدنه تابع شامل مجموعه ای از عبارت ها است که تعریف می کند که تابع چه کاری انجام می دهد.
- مقدار بازگشتی – مقدار بازگشتی یک تابع؛ آخرین عبارت در بدنه تابع است که باید ارزیابی شود.
زبان برنامه نویسی R توابع درونی بسیار زیادی دارد که می توان مستقیماً آنها را در برنامه فراخوانی کرد؛ بدون این که آنها را ابتدا تعریف نمود. ما همچنین می توانید توابع خودمان را ایجاد کنیم که از آنها به عنوان توابع تعریف شده توسط کاربر (user defined) یاد می شود.
توابع درونی
مثال های ساده ای از توابع داخلی ()seq()، max()، sum و (…)paste و غیره هستند. آنها مستقیماً توسط برنامه هایی که کاربر می نویسد؛ فراخوانی می شود. شما می توانید با استفاده از توابع R، اغلب تابع هایی که در 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))
زمانی که کد بالا را اجرا می کنیم؛ نتایج زیر حاصل می شود:
[۱] ۳۲ ۳۳ ۳۴ ۳۵ ۳۶ ۳۷ ۳۸ ۳۹ ۴۰ ۴۱ ۴۲ ۴۳ ۴۴
[۱] ۵۳٫۵
[۱] ۱۵۲۶
توابع تعریف شده توسط کاربر
ما می توانیم از توابع تعریف شده توسط کاربر در 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)
زمانی که کد بالا را اجرا می کنیم؛ نتیجه زیر ایجاد می شود:
[۱] ۱
[۱] ۴
[۱] ۹
[۱] ۱۶
[۱] ۲۵
[۱] ۳۶
فراخوانی یک تابع بدون آرگومان
# 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()
زمانی که کد بالا را اجرا می نماییم؛ نتیجه زیر حاصل می شود:
[۱] ۱
[۱] ۴
[۱] ۹
[۱] ۱۶
[۱] ۲۵
فراخوانی یک تابع با مقادیر آرگومان (توسط موقعیت و نام)
آرگومان ها برای فراخوانی یک تابع را می توان در ادامه عبارتی که تابع تعریف می شود؛ بیان کرد. همچنین می توان آنها را در یک توالی جداگانه بیان کرد اما باید آن را به نام های آرگومان ها تخصیص داد.
# 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)
زمانی که کد بالا را اجرا می کنیم؛ نتیجه زیر حاصل می شود:
[۱] ۲۶
[۱] ۵۸
فراخوانی یک تابع با آرگومان پیش فرض
ما می توانیم مقدار آرگومان ها را در تعریف تابع بیان کنیم و تابع را بدون ارائه ی هر آرگومانی فراخوانی کنیم تا به نتایج پیش فرش دست یابیم. اما ما می توانیم برخی توابع را با ارائه ی مقادیر جدید آرگومان ها فراخوانی کنیم و به نتایج غیر پیش فرض دست یابیم.
# 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)
زمانی که کد بالا را اجرا می کنیم؛ نتیجه زیر حاصل می شود:
[۱] ۱۸
[۱] ۴۵
ارزیابی تنبل تابع
اصطلاحاً گفته می شود که ارزیابی آرگومانها برای توابع، تنبلانه انجام می شود به صورتی که فقط زمانی ارزیابی صورت می گیرد که توسط بدنه تابع مورد نیاز باشد.
# 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)
زمانی که مد بالا را اجرا می کنیم؛ نتایج زیر حاصل می شود:
[۱] ۳۶
[۱] ۶
Error in print(b) : argument “b” is missing, with no default
سلام من میخوام تابعی تعریف کنم که داخلش از حروف یونانی و تووابع یونانی استفاده میشه..چطور باید تعریفش کنم؟
پاسخ