یک تابع در زبان R مجموعهای از دستورات است که برای انجام یک وظیفه مشخص بهصورت سازمانیافته کنار هم قرار گرفتهاند. زبان R دارای تعداد زیادی تابع از پیش تعریفشده است و کاربران نیز میتوانند توابع دلخواه خود را ایجاد کنند.
در R، تابع یک شیء (object) محسوب میشود، بنابراین مفسر R میتواند کنترل برنامه را به تابع منتقل کرده و همراه آن آرگومانهایی که برای انجام وظیفه لازم هستند، ارسال کند.
تابع سپس وظیفه خود را انجام داده و کنترل را به مفسر بازمیگرداند، همراه با هر نتیجهای که ممکن است در اشیاء دیگر ذخیره شود.
تعریف تابع در زبان R
یک تابع در R با استفاده از کلیدواژه function
ایجاد میشود. ساختار پایه تعریف یک تابع به صورت زیر است:
1 2 3 |
function_name <- function(arg_1, arg_2, ...) { Function body } |
توابع از پیش تعریفشده (Built-in Function)
نمونههای سادهای از توابع از پیش تعریفشده در R عبارتاند از seq()
, mean()
, max()
, sum(x)
و paste(...)
و غیره. این توابع مستقیماً توسط برنامههای نوشتهشده توسط کاربر فراخوانی میشوند. میتوان به اکثر توابع پرکاربرد R مراجعه کرد.
1 2 3 4 5 6 7 8 |
# 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 2 3 |
[1] 32 33 34 35 36 37 38 39 40 41 42 43 44 [1] 53.5 [1] 1526 |
توابع تعریفشده توسط کاربر (User-defined Function)
میتوان توابع دلخواه در R ایجاد کرد. این توابع خاص نیاز کاربر هستند و پس از ایجاد، میتوان آنها را مشابه توابع از پیش تعریفشده استفاده کرد.
1 2 3 4 5 6 7 |
# Create a function to print squares of numbers in sequence. new.function <- function(a) { for(i in 1:a) { b <- i^2 print(b) } } |
فراخوانی یک تابع در زبان R
1 2 3 4 5 6 7 8 9 10 |
# 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 2 3 4 5 6 |
[1] 1 [1] 4 [1] 9 [1] 16 [1] 25 [1] 36 |
فراخوانی تابع بدون آرگومان
1 2 3 4 5 6 7 8 9 |
# 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 2 3 4 5 |
[1] 1 [1] 4 [1] 9 [1] 16 [1] 25 |
فراخوانی تابع با آرگومانها (براساس موقعیت یا نام)
آرگومانها میتوانند به همان ترتیبی که در تعریف تابع آمدهاند داده شوند، یا به ترتیب متفاوت اما با مشخص کردن نام آرگومانها.
1 2 3 4 5 6 7 8 9 10 11 |
# 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 2 |
[1] 26 [1] 58 |
فراخوانی تابع با آرگومان پیشفرض
میتوان مقادیر پیشفرض برای آرگومانها تعریف کرد و تابع را بدون هیچ آرگومانی فراخوانی کرد تا نتیجه پیشفرض دریافت شود. همچنین میتوان با دادن مقادیر جدید، نتیجه غیرپیشفرض گرفت.
1 2 3 4 5 6 7 8 9 10 11 |
# 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 2 |
[1] 18 [1] 45 |
ارزیابی تنبل آرگومانها (Lazy Evaluation of Function)
در R، آرگومانهای توابع به صورت تنبل (lazy) ارزیابی میشوند؛ یعنی فقط زمانی که بدنه تابع به آنها نیاز دارد، مقداردهی میشوند.
1 2 3 4 5 6 7 8 9 |
# 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 2 3 |
[1] 36 [1] 6 Error in print(b) : argument "b" is missing, with no default |
راستی! برای دریافت مطالب جدید در کانال تلگرام یا پیج اینستاگرام سورس باران عضو شوید.
- انتشار: ۱۶ شهریور ۱۴۰۴
دسته بندی موضوعات
- آموزش ارز دیجیتال
- آموزش برنامه نویسی
- آموزش متنی برنامه نویسی
- اطلاعیه و سایر مطالب
- پروژه برنامه نویسی
- دوره های تخصصی برنامه نویسی
- رپورتاژ
- فیلم های آموزشی
- ++C
- ADO.NET
- Adobe Flash
- Ajax
- AngularJS
- apache
- ARM
- Asp.Net
- ASP.NET MVC
- AVR
- Bootstrap
- CCNA
- CCNP
- CMD
- CSS
- Dreameaver
- EntityFramework
- HTML
- IOS
- jquery
- Linq
- Mysql
- Oracle
- PHP
- PHPMyAdmin
- Rational Rose
- silver light
- SQL Server
- Stimulsoft Reports
- Telerik
- UML
- VB.NET&VB6
- WPF
- Xml
- آموزش های پروژه محور
- اتوکد
- الگوریتم تقریبی
- امنیت
- اندروید
- اندروید استودیو
- بک ترک
- بیسیک فور اندروید
- پایتون
- جاوا
- جاوا اسکریپت
- جوملا
- دلفی
- دوره آموزش Go
- دوره های رایگان پیشنهادی
- زامارین
- سئو
- ساخت CMS
- سی شارپ
- شبکه و مجازی سازی
- طراحی الگوریتم
- طراحی بازی
- طراحی وب
- فتوشاپ
- فریم ورک codeigniter
- فلاتر
- کانستراکت
- کریستال ریپورت
- لاراول
- معماری کامپیوتر
- مهندسی اینترنت
- هوش مصنوعی
- یونیتی
- کتاب های آموزشی
- Android
- ASP.NET
- AVR
- LINQ
- php
- Workflow
- اچ تی ام ال
- بانک اطلاعاتی
- برنامه نویسی سوکت
- برنامه نویسی موبایل
- پاسکال
- پایان نامه
- پایتون
- جاوا
- جاوا اسکریپت
- جی کوئری
- داده کاوی
- دلفی
- رباتیک
- سئو
- سایر کتاب ها
- سخت افزار
- سی اس اس
- سی پلاس پلاس
- سی شارپ
- طراحی الگوریتم
- فتوشاپ
- مقاله
- مهندسی نرم افزار
- هک و امنیت
- هوش مصنوعی
- ویژوال بیسیک
- نرم افزار و ابزار برنامه نویسی
- وردپرس