Skip to content
Siamcoder

ขอบเขตของตัวแปรในภาษา R

R1 min read

ขอบเขตของตัวแปรในภาษา R

ในภาษา R, ขอบเขต (scope) ของตัวแปรหมายถึงส่วนของโปรแกรมที่ตัวแปรนั้นสามารถเข้าถึงหรือใช้งานได้ และขอบเขตของตัวแปรสามารถกำหนดได้โดยการประกาศตัวแปรในบล็อกหรือฟังก์ชันที่เฉพาะเจาะจง

นี่คือตัวอย่างโค้ดที่แสดงการใช้งานของตัวแปรในขอบเขตต่างๆ ในภาษา R:

# ตัวแปรแบบส่วนตัว (Private variables)
my_function <- function() {
x <- 5 # ตัวแปร x เป็นตัวแปรท้องถิ่นในฟังก์ชัน my\_function
print(x)
}
my_function() # ผลลัพธ์: 5
# ตัวแปรแบบส่วนกลาง (Global variables)
x <- 10 # ตัวแปร x เป็นตัวแปรสาธารณะในที่นี้
my_function <- function() {
print(x) # โปรแกรมสามารถเข้าถึงตัวแปรสาธารณะได้ทุกส่วนของโปรแกรม
}
my_function() # ผลลัพธ์: 10
# ตัวแปรอาร์กิวเมนต์ (Argument variables)
my_function <- function(x) {
print(x) # ตัวแปร x เป็นตัวแปรอาร์กิวเมนต์ในฟังก์ชัน my\_function
}
my_function(7) # ผลลัพธ์: 7`

ในตัวอย่างข้างต้น เราใช้ฟังก์ชัน my_function เพื่อแสดงการใช้งานตัวแปรในขอบเขตต่างๆ ในภาษา R ดังนี้:

  • ในส่วนของตัวแปรแบบส่วนตัว (Private variables) เราสร้างตัวแปร x ภายในฟังก์ชัน my_function และสามารถเข้าถึงและแสดงค่าของตัวแปร x ในฟังก์ชันนี้ได้ ในตัวอย่างนี้ เมื่อเรียกใช้ฟังก์ชัน my_function() ผลลัพธ์ที่แสดงคือ 5 ซึ่งเป็นค่าของตัวแปร x ที่ถูกกำหนดในฟังก์ชันนี้เท่านั้น
  • ในส่วนของตัวแปรแบบส่วนกลาง (Global variables) เราสร้างตัวแปร x ในส่วนสาธารณะภายนอกฟังก์ชัน my_function ซึ่งทำให้โปรแกรมสามารถเข้าถึงและใช้งานตัวแปร x ได้ทุกส่วนของโปรแกรม ในตัวอย่างนี้ เมื่อเรียกใช้ฟังก์ชัน my_function() ผลลัพธ์ที่แสดงคือ 10 ซึ่งเป็นค่าของตัวแปร x ที่ถูกกำหนดในส่วนสาธารณะ
  • ในส่วนของตัวแปรอาร์กิวเมนต์ (Argument variables) เราสร้างฟังก์ชัน my_function ที่รับตัวแปร x เป็นตัวแปรอาร์กิวเมนต์ และเราสามารถเข้าถึงและแสดงค่าของตัวแปร x ในฟังก์ชันนี้ได้ ในตัวอย่างนี้ เมื่อเรียกใช้ฟังก์ชัน my_function(7) ผลลัพธ์ที่แสดงคือ 7 ซึ่งเป็นค่าของตัวแปร x ที่ถูกส่งเข้ามาในฟังก์ชันนี้

ในภาษา R, การเข้าถึงตัวแปรขึ้นอยู่กับขอบเขตของตัวแปรนั้น หากตัวแปรถูกกำหนดในฟังก์ชันหรือบล็อกที่มีขอบเขตจำกัด เราจะไม่สามารถเข้าถึงตัวแปรดังกล่าวจากภายนอกขอบเขตนั้นได้

อย่างไรก็ตาม หากไม่มีการกำหนดตัวแปรภายในฟังก์ชันหรือบล็อก ภายนอกขอบเขตนั้น จะสามารถเข้าถึงตัวแปรได้ และถ้ามีการเปลี่ยนแปลงค่าของตัวแปรที่อยู่นอกขอบเขตใดๆ ตัวแปรที่อยู่ในขอบเขตนั้นๆ จะถูกมองเห็นและได้รับผลกระทบจากการเปลี่ยนแปลงดังกล่าว

นี่คือตัวอย่างโค้ดที่แสดงการใช้งานของตัวแปรในขอบเขตต่างๆ ในภาษา R:

x <- 10 # ตัวแปร x ในขอบเขตสาธารณะ
my_function <- function() {
x <- 5 # ตัวแปร x ในขอบเขตของฟังก์ชัน my\_function
print(x) # ผลลัพธ์: 5
}
my_function() # เรียกใช้ฟังก์ชัน my\_function ผลลัพธ์ที่แสดงคือ 5
print(x) # ผลลัพธ์: 10 (ค่าของตัวแปร x ในขอบเขตสาธารณะไม่เปลี่ยนแปลง)`

ในตัวอย่างข้างต้น เรากำหนดตัวแปร x ในขอบเขตสาธารณะภายนอกฟังก์ชัน my_function และในฟังก์ชัน my_function เรากำหนดตัวแปร x อีกครั้ง ดังนั้น เมื่อเรียกใช้ฟังก์ชัน my_function() ผลลัพธ์ที่แสดงคือ 5 เพราะตัวแปร x ที่ถูกพิจารณาในขอบเขตของฟังก์ชันนี้มีค่าเป็น 5 แต่ตัวแปร x ในขอบเขตสาธารณะภายนอกไม่ได้รับผลกระทบจากการเปลี่ยนแปลง

เมื่อพิมพ์ print(x) หลังจากเรียกใช้ฟังก์ชัน my_function() ผลลัพธ์ที่แสดงคือ 10 เนื่องจากค่าของตัวแปร x ในขอบเขตสาธารณะภายนอกไม่ได้เปลี่ยนแปลง