Skip to content
Siamcoder

การเข้าถึงตัวแปรในขอบเขตต่างๆ ในภาษา R

R1 min read

การเข้าถึงตัวแปรในขอบเขตที่แตกต่างกันในภาษา R

ในภาษา R, เราสามารถใช้ตัวแปรที่ถูกประกาศในขอบเขตต่างๆ เพื่อนำค่าไปใช้งานหรือประมวลผลในส่วนอื่นของโปรแกรมได้

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

my_function <- function() {
local_variable <- 5 # ประกาศตัวแปรในขอบเขตภายในฟังก์ชัน
print(local_variable) # ผลลัพธ์: 5
nested_function <- function() {
nested_variable <- 10 # ประกาศตัวแปรในขอบเขตภายในฟังก์ชันซ้อน
print(nested_variable) # ผลลัพธ์: 10
print(local_variable) # ผลลัพธ์: 5
}
nested_function()
}
my_function()
print(local_variable) # ผลลัพธ์: Error: object 'local\_variable' not found
print(nested_variable) # ผลลัพธ์: Error: object 'nested\_variable' not found`

ในตัวอย่างข้างต้น เราสร้างฟังก์ชัน my_function ที่ประกาศตัวแปร local_variable ภายในขอบเขตภายในฟังก์ชัน จากนั้น เราสร้างฟังก์ชัน nested_function ภายใน my_function และประกาศตัวแปร nested_variable ในขอบเขตภายใน nested_function

เมื่อเราเรียกใช้ฟังก์ชัน my_function() โปรแกรมจะแสดงผลลัพธ์ของ local_variable ซึ่งเป็น 5 และเรียกใช้ nested_function() ภายใน my_function ซึ่งจะแสดงผลลัพธ์ของ nested_variable ซึ่งเป็น 10 และ local_variable ซึ่งเป็น 5

อย่างไรก็ตาม เมื่อเราพยายามเข้าถึงตัวแปร local_variable หรือ nested_variable นอกเหนือจากขอบเขตที่มันถูกประกาศ เช่น การพิมพ์ print(local_variable) หรือ print(nested_variable) จะเกิดข้อผิดพลาดที่บอกว่า "Error: object 'local_variable' not found" หรือ "Error: object 'nested_variable' not found" เนื่องจากตัวแปรเหล่านี้ไม่ได้ถูกประกาศในขอบเขตที่เหลืออยู่ในโปรแกรม

การเข้าถึงตัวแปรในขอบเขตที่แตกต่างกันในภาษา R ช่วยให้เราสามารถใช้งานตัวแปรในที่ต่างๆ ของโปรแกรมได้อย่างยืดหยุ่น และช่วยให้เราแยกแยะและบริหารจัดการขอบเขตของตัวแปรในการเขียนโค้ดอย่างเหมาะสม

เราสามารถใช้คีย์เวิร์ด <<- ในภาษา R เพื่อเข้าถึงและแก้ไขค่าของตัวแปรในขอบเขตที่แตกต่างกัน อย่างไรก็ตาม การใช้ <<- จะต้องใช้ในกรณีที่จำเป็นเท่านั้น เนื่องจากมันอาจทำให้โค้ดยากในการอ่านและแก้ไขในอนาคต

นี่คือตัวอย่างโค้ดที่แสดงการใช้งานคีย์เวิร์ด <<- เพื่อเข้าถึงและแก้ไขตัวแปรในขอบเขตที่แตกต่างกันในภาษา R:

my_function <- function() {
local_variable <- 5
nested_function <- function() {
nested_variable <<- 10 # ใช้คีย์เวิร์ด <<- เพื่อเข้าถึงตัวแปรนอกขอบเขตของฟังก์ชัน
local_variable <<- 7 # ใช้คีย์เวิร์ด <<- เพื่อแก้ไขค่าของตัวแปรนอกขอบเขตของฟังก์ชัน
}
nested_function()
print(nested_variable) # ผลลัพธ์: 10
print(local_variable) # ผลลัพธ์: 7
}
my_function()
print(nested_variable) # ผลลัพธ์: Error: object 'nested\_variable' not found
print(local_variable) # ผลลัพธ์: 7`

ในตัวอย่างข้างต้น เราใช้คีย์เวิร์ด <<- เพื่อเข้าถึงตัวแปร nested_variable ภายใน nested_function และแก้ไขค่าของตัวแปร local_variable ที่อยู่นอกขอบเขตของฟังก์ชัน

เมื่อเราเรียกใช้ฟังก์ชัน my_function() โปรแกรมจะแสดงผลลัพธ์ของ nested_variable ซึ่งเป็น 10 และ local_variable ซึ่งเปลี่ยนค่าเป็น 7 ด้วยการใช้คีย์เวิร์ด <<-

อย่างไรก็ตาม เมื่อเราพยายามเข้าถึงตัวแปร nested_variable นอกเหนือจากขอบเขตที่มันถูกประกาศ เช่น การพิมพ์ print(nested_variable) จะเกิดข้อผิดพลาดที่บอกว่า "Error: object 'nested_variable' not found" เนื่องจากตัวแปรนั้นไม่ถูกต้องในขอบเขตที่เหลืออยู่ในโปรแกรม

การเข้าถึงและแก้ไขตัวแปรในขอบเขตที่แตกต่างกันในภาษา R ด้วยคีย์เวิร์ด <<- เป็นวิธีที่ใช้บ่อยในกรณีที่ต้องการเปลี่ยนแปลงค่าของตัวแปรนอกขอบเขตของฟังก์ชัน แต่ควรใช้ในกรณีที่จำเป็นเท่านั้นเพื่อรักษาความชัดเจนและอ่านโค้ดได้ง่ายในอนาคต