R - Chức năng

Hàm là một tập hợp các câu lệnh được tổ chức cùng nhau để thực hiện một nhiệm vụ cụ thể. R có một số lượng lớn các chức năng được tạo sẵn và người dùng có thể tạo các chức năng của riêng họ.

Trong R, một hàm là một đối tượng nên trình thông dịch R có thể chuyển quyền điều khiển cho hàm, cùng với các đối số có thể cần thiết để hàm thực hiện các hành động.

Đến lượt nó, hàm thực hiện nhiệm vụ của nó và trả lại quyền điều khiển cho trình thông dịch cũng như bất kỳ kết quả nào có thể được lưu trữ trong các đối tượng khác.

Định nghĩa hàm

Một hàm R được tạo bằng cách sử dụng từ khóa function. Cú pháp cơ bản của định nghĩa hàm R như sau:

function_name <- function(arg_1, arg_2, ...) {
   Function body 
}

Các thành phần chức năng

Các phần khác nhau của một hàm là -

  • Function Name- Đây là tên thực của hàm. Nó được lưu trữ trong môi trường R như một đối tượng với tên này.

  • Arguments- Một đối số là một trình giữ chỗ. Khi một hàm được gọi, bạn truyền một giá trị cho đối số. Đối số là tùy chọn; nghĩa là, một hàm có thể không chứa đối số. Ngoài ra, các đối số có thể có giá trị mặc định.

  • Function Body - Phần thân hàm chứa một tập hợp các câu lệnh xác định chức năng thực hiện những gì.

  • Return Value - Giá trị trả về của một hàm là biểu thức cuối cùng trong thân hàm được đánh giá.

R có nhiều in-builtcác hàm có thể được gọi trực tiếp trong chương trình mà không cần xác định chúng trước. Chúng tôi cũng có thể tạo và sử dụng các chức năng của riêng mình, được gọi làuser defined chức năng.

Chức năng tích hợp

Ví dụ đơn giản về các hàm tích hợp là seq(), mean(), max(), sum(x)paste(...)vv Chúng được gọi trực tiếp bởi các chương trình do người dùng viết. Bạn có thể tham khảo các hàm R được sử dụng rộng rãi nhất.

# 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))

Khi chúng tôi thực thi đoạn mã trên, nó tạo ra kết quả sau:

[1] 32 33 34 35 36 37 38 39 40 41 42 43 44
[1] 53.5
[1] 1526

Chức năng do người dùng xác định

Chúng ta có thể tạo các hàm do người dùng định nghĩa trong R. Chúng cụ thể cho những gì người dùng muốn và sau khi được tạo, chúng có thể được sử dụng giống như các hàm tích hợp sẵn. Dưới đây là một ví dụ về cách một hàm được tạo và sử dụng.

# Create a function to print squares of numbers in sequence.
new.function <- function(a) {
   for(i in 1:a) {
      b <- i^2
      print(b)
   }
}

Gọi một hàm

# 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)

Khi chúng tôi thực thi đoạn mã trên, nó tạo ra kết quả sau:

[1] 1
[1] 4
[1] 9
[1] 16
[1] 25
[1] 36

Gọi một hàm mà không có đối số

# 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()

Khi chúng tôi thực thi đoạn mã trên, nó tạo ra kết quả sau:

[1] 1
[1] 4
[1] 9
[1] 16
[1] 25

Gọi một hàm với các giá trị đối số (theo vị trí và theo tên)

Các đối số cho một lệnh gọi hàm có thể được cung cấp theo cùng một trình tự như được định nghĩa trong hàm hoặc chúng có thể được cung cấp theo một trình tự khác nhưng được gán cho tên của các đối số.

# 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)

Khi chúng tôi thực thi đoạn mã trên, nó tạo ra kết quả sau:

[1] 26
[1] 58

Gọi một hàm với đối số mặc định

Chúng ta có thể xác định giá trị của các đối số trong định nghĩa hàm và gọi hàm mà không cần cung cấp bất kỳ đối số nào để lấy kết quả mặc định. Nhưng chúng ta cũng có thể gọi các hàm như vậy bằng cách cung cấp các giá trị mới của đối số và nhận kết quả không mặc định.

# 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)

Khi chúng tôi thực thi đoạn mã trên, nó tạo ra kết quả sau:

[1] 18
[1] 45

Đánh giá chức năng lười biếng

Các đối số cho các hàm được đánh giá một cách lười biếng, có nghĩa là chúng chỉ được đánh giá khi cần thiết bởi thân hàm.

# 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)

Khi chúng tôi thực thi đoạn mã trên, nó tạo ra kết quả sau:

[1] 36
[1] 6
Error in print(b) : argument "b" is missing, with no default