The manual trạng thái:Tại sao toán tử "=" R không được sử dụng trong các hàm?
Nhà điều hành '< -' có thể được sử dụng bất cứ nơi nào, trong khi các nhà điều hành '=' chỉ được phép ở cấp cao nhất (ví dụ: trong diễn tả trọn vẹn gõ tại dấu nhắc lệnh) hoặc là một trong số của các biểu thức con trong danh sách các biểu thức được kết hợp nhanh.
The question here đề cập đến sự khác biệt khi được sử dụng trong cuộc gọi chức năng. Nhưng trong định nghĩa chức năng, có vẻ như hoạt động bình thường:
a = function()
{
b = 2
x <- 3
y <<- 4
}
a()
# (b and x are undefined here)
Vậy tại sao hướng dẫn sử dụng đề cập đến the operator ‘=’ is only allowed at the top level
??
Có gì về nó trong language definition là (không có =
hành niêm yết, thật là một sự xấu hổ!)
Nó được đề cập trong R-lang trong [phần 10.4.2 Nhà khai thác tiền tố và tiền tố] (http://cran.r-project.org/doc/manuals/R-lang.html#Infix-and-prefix-operators), nhưng không nói nhiều hơn những gì trong mục trợ giúp mà bạn đã đề cập. –
Văn bản bạn trích dẫn cho biết "ở cấp cao nhất ** HOẶC ** trong danh sách các biểu thức phụ được chuẩn bị sẵn". Bạn đang sử dụng nó trong một danh sách các biểu thức phụ được chuẩn bị sẵn sàng. Được phép. – Andrie
Bạn phải đi đến độ dài lớn để tìm thấy một biểu thức mà không phải là toplevel cũng không phải trong niềng răng. Đây là một. Đôi khi bạn muốn bọc một nhiệm vụ bên trong một 'try' block:' try (x <- f()) 'là tốt, nhưng' try (x = f (x)) 'không phải là - bạn cần phải thay đổi toán tử gán hoặc thêm niềng răng. –