Mục lục:
Video: Tin mới trong ngày: Vượt biên mua pháo và Đốt pháo ngay cột mốc biên giới 2025
Trong khi làm việc với các chức năng trong R, đôi khi, bạn làm việc với một số đối tượng mà bạn đã không tạo ra trong không gian làm việc. Bạn sử dụng các đối số x, mult và FUN như thể chúng là các đối tượng, và bạn tạo một phần trăm đối tượng bên trong hàm mà bạn không thể tìm thấy trong không gian làm việc sau khi sử dụng hàm. Vì vậy những gì đang xảy ra?
Tạo một trường hợp thử nghiệm
Chúng ta hãy tìm hiểu thông qua một ví dụ nhỏ. Đầu tiên, tạo một đối tượng x và một hàm test nhỏ () như sau:
Các test () chức năng không làm nhiều. Phải mất một đối số x, in nó vào bàn điều khiển, loại bỏ nó, và cố gắng để in nó một lần nữa. Bạn có thể nghĩ rằng chức năng này sẽ thất bại, bởi vì x biến mất sau khi dòng rm (x). Nhưng không, nếu bạn thử chức năng này, nó chỉ làm việc tốt, như thể hiện trong ví dụ sau:
Tìm kiếm đường dẫn
Nếu bạn sử dụng một chức năng, chức năng đầu tiên tạo ra một môi trường địa phương
tạm thời.
Môi trường cục bộ này lồng nhau trong môi trường toàn cầu, có nghĩa là, từ môi trường cục bộ đó, bạn cũng có thể truy cập bất kỳ đối tượng nào từ môi trường toàn cầu. Ngay sau khi chức năng kết thúc, môi trường địa phương sẽ bị phá hủy cùng với tất cả các đối tượng trong đó.
Nếu bạn gọi một hàm từ không gian làm việc thông qua một kịch bản hoặc bằng cách sử dụng dòng lệnh, thì môi trường cha mẹ này sẽ là môi trường toàn cầu. Nếu R thấy bất kỳ tên đối tượng được đề cập trong bất kỳ mã nào trong hàm, đầu tiên nó sẽ tìm kiếm môi trường cục bộ. Bởi vì nó tìm thấy một đối tượng x ở đó, nó sử dụng một cho câu cat () đầu tiên. Trong dòng tiếp theo, R loại bỏ đối tượng đó x. Vì vậy, khi R đạt đến dòng thứ ba, nó không thể tìm thấy một đối tượng x trong môi trường địa phương nữa. Không vấn đề gì. R di chuyển lên stack của môi trường và kiểm tra để xem nếu nó tìm thấy bất cứ điều gì trông giống như một x trong môi trường toàn cầu. Bởi vì nó có thể tìm thấy một x ở đó, nó sử dụng một trong câu cat () thứ hai. Nếu bạn sử dụng rm () bên trong một hàm, rm () sẽ mặc định xóa các đối tượng trong hàm đó.Bằng cách này, bạn có thể tránh chạy bộ nhớ khi viết các hàm cần phải làm việc trên các tập dữ liệu lớn. Bạn có thể ngay lập tức loại bỏ các đối tượng tạm thời lớn thay vì chờ đợi các chức năng để làm như vậy vào cuối.