முக்கிய உள்ளடக்கத்திற்குச் செல்லவும்
தொகுதி 3 · பாடம் 1 இன் 2பாடத்திட்டத்தில் 5/10~12 min
தொகுதி பாடங்கள் (1/2)

எழுதும் செயல்பாடுகள்

R இல், செயல்பாடுகள் முதல்-தர குடிமக்கள் (அவற்றின் சொந்த உரிமையில் உள்ள பொருள்கள்) மற்றும் உங்கள் குறியீட்டை மட்டு, மீண்டும் பயன்படுத்தக்கூடிய மற்றும் நன்கு ஒழுங்கமைக்கப்பட்ட தொகுதிகளாக கட்டமைக்க உங்களை அனுமதிக்கிறது.

ஒரு செயல்பாட்டை வரையறுத்தல்

ஒரு செயல்பாட்டை வரையறுக்க, function முக்கிய சொல்லைப் பயன்படுத்தவும் மற்றும் <- ஒதுக்கீட்டு ஆபரேட்டரைப் பயன்படுத்தி உருவாக்கப்பட்ட பொருளை மாறிக்கு (செயல்பாட்டின் பெயர்) ஒதுக்கவும்:

R
# Simple function definition
greet_user <- function() {
  print("Hello, User!")
}

# Invoking the function
greet_user()

அளவுருக்கள் மற்றும் வருவாய் மதிப்புகள்

செயல்பாடுகள் ஒன்று அல்லது அதற்கு மேற்பட்ட அளவுருக்களை ஏற்கலாம். மதிப்பை வெளிப்படையாக வழங்க, return() செயல்பாட்டைப் பயன்படுத்தவும். return() தவிர்க்கப்பட்டால், செயல்பாடு உடலில் கடைசியாக மதிப்பிடப்பட்ட வெளிப்பாட்டின் மதிப்பை R தானாகவே வழங்கும்.

R
# Function that adds two numbers and returns the result
add_numbers <- function(a, b) {
  sum_result <- a + b
  return(sum_result)
}

total <- add_numbers(5, 7)
print(total) # Prints 12

இயல்புநிலை வாதங்கள்

செயல்பாட்டின் அளவுருக்களுக்கான இயல்புநிலை மதிப்புகளை நீங்கள் குறிப்பிடலாம். செயல்பாடு செயல்படுத்தப்படும்போது வாதம் வழங்கப்படாவிட்டால், R இயல்புநிலை மதிப்பைப் பயன்படுத்தும்:

R
# The function uses a default discount rate of 10% (0.10)
apply_discount <- function(price, discount = 0.10) {
  discounted_price <- price * (1 - discount)
  return(discounted_price)
}

# Uses the default (10%)
print(apply_discount(100)) # Prints 90

# Specifies a custom discount (20%)
print(apply_discount(100, 0.20)) # Prints 80

பட்டியல்களுடன் பல மதிப்புகளை வழங்குகிறது

R இல் உள்ள செயல்பாடு return() வழியாக ஒரு பொருளை மட்டுமே நேரடியாக திருப்பி அனுப்ப முடியும் என்பதால், நாம் பல மதிப்புகளை (பல்வேறு வகைகள் அல்லது நீளங்களில்) வழங்க வேண்டும் என்றால், அவற்றை ஒரு பட்டியலில் (list) தொகுக்கலாம்:

R
get_stats <- function(v) {
  stats <- list(
    mean_val = mean(v),
    max_val = max(v)
  )
  return(stats)
}

results <- get_stats(c(10, 20, 30))
print(results$mean_val) # Prints 20

அநாமதேய செயல்பாடுகள் மற்றும் sapply

அநாமதேய செயல்பாடுகள் (இன்லைனில் பெயரிடப்படாத செயல்பாடுகள்) sapply() போன்ற செயல்பாடுகளுடன் இணைக்கப்பட்டால், திசையன் அல்லது பட்டியலின் உறுப்புகளில் விரைவான மாற்றங்களைப் பயன்படுத்த மிகவும் பயனுள்ளதாக இருக்கும்.

நவீன R இல் (பதிப்பு 4.1.0 முதல்), கிளாசிக் function(x)க்கு கூடுதலாக \(x) சுருக்கெழுத்து தொடரியல் பயன்படுத்தி அநாமதேய செயல்பாடுகளை வரையறுக்கலாம்:

R
v <- c(1, 2, 3)

# Using sapply with a classic anonymous function
sapply(v, function(x) x^2) # 1 4 9

# Using sapply with shorthand syntax (R >= 4.1.0)
sapply(v, \(x) x^2) # 1 4 9

நீங்களே முயற்சி செய்து பாருங்கள்

உடற்பயிற்சி#r.m3.l1.e1
முயற்சிகள்: 0ஏற்றுகிறது…

இரட்டை_மதிப்பு என்ற செயல்பாட்டை வரையறுக்கவும், அது ஒற்றை வாதத்தை x ஐ ஏற்றுக்கொண்டு, அதன் இரட்டை (x * 2) ஐ ரிட்டர்ன்() ஐப் பயன்படுத்தி வழங்குகிறது.

எடிட்டரை ஏற்றுகிறது…
குறிப்பைக் காட்டு

USA la sintassi: double_value <- செயல்பாடு(x) { return(x * 2)}

3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்

உடற்பயிற்சி#r.m3.l1.e2
முயற்சிகள்: 0ஏற்றுகிறது…

அகலம் மற்றும் உயரம் ஆகிய இரண்டு வாதங்களை ஏற்கும் Calculate_area என்ற செயல்பாட்டை வரையறுக்கவும். செயல்பாடு ரிட்டர்ன்() ஐப் பயன்படுத்தி தங்கள் தயாரிப்பைத் திரும்பப் பெற வேண்டும்.

எடிட்டரை ஏற்றுகிறது…
குறிப்பைக் காட்டு

அளவுருக்கள் அகலம் மற்றும் உயரத்துடன் செயல்பாட்டை வரையறுத்து, அகலம் * உயரத்தை திரும்பப் பெறவும்.

3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்

உடற்பயிற்சி#r.m3.l1.e3
முயற்சிகள்: 0ஏற்றுகிறது…

தேவையான வாதத் தொகை மற்றும் 0.22 இன் இயல்புநிலை மதிப்புடன் விருப்ப வாத விகிதத்தை ஏற்கும் ගණනය_டாக்ஸ் என்ற செயல்பாட்டை வரையறுக்கவும். தயாரிப்புத் தொகை * விகிதத்தை வழங்கவும்.

எடிட்டரை ஏற்றுகிறது…
குறிப்பைக் காட்டு

USA: கணக்கிட_வரி <- செயல்பாடு(தொகை, விகிதம் = 0.22) {வருமானம்(தொகை * விகிதம்)}

3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்

உடற்பயிற்சி#r.m3.l1.e4
முயற்சிகள்: 0ஏற்றுகிறது…

வெக்டார் v ஐ ஏற்கும் analyse_vector என்ற செயல்பாட்டை வரையறுக்கவும். அந்தச் செயல்பாடு, தொகை (வெக்டரின் கூட்டுத்தொகை, கூட்டுத்தொகை (v) உடன் கணக்கிடப்படுகிறது) மற்றும் லென் (வெக்டரின் நீளம், நீளம்(v) உடன் கணக்கிடப்படுகிறது) என்ற இரண்டு கூறுகளைக் கொண்ட பட்டியலை வழங்க வேண்டும்.

எடிட்டரை ஏற்றுகிறது…
குறிப்பைக் காட்டு

தொடரியல் பயன்படுத்தவும்: analyse_vector <- செயல்பாடு(v) { return(list(sum = sum(v), len = length(v)))}

3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்

உடற்பயிற்சி#r.m3.l1.e5
முயற்சிகள்: 0ஏற்றுகிறது…

திசையன் v கொடுக்கப்பட்டால், ஒவ்வொரு தனிமத்தின் மதிப்பையும் மூன்று மடங்காக அதிகரிக்க அநாமதேய செயல்பாட்டுடன் sapply() செயல்பாட்டைப் பயன்படுத்தவும் (அதை 3 ஆல் பெருக்குதல்). முடிவை மூன்று மடங்கு மாறியில் சேமிக்கவும்.

எடிட்டரை ஏற்றுகிறது…
குறிப்பைக் காட்டு

பயன்படுத்தவும்: மூன்று மடங்கு <- sapply(v, function(x) x * 3)

3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்