Đây là mã R của tôi. Các chức năng được định nghĩa là:
f <- function(x, T) {
10 * sin(0.3 * x) * sin(1.3 * x ^ 2) + 0.001 * x ^ 3 + 0.2 * x + 80
}
g <- function(x, T, f=f) {
exp(-f(x) / T)
}
test <- function(g=g, T=1) {
g(1, T)
}
Lỗi chạy là:
> test ()
Error in test ():
lời hứa đã được đánh giá: tham chiếu đối số mặc định đệ quy hoặc các vấn đề trước đó?
Nếu tôi thay thế định nghĩa f
trong đó g
, thì lỗi sẽ biến mất.
Tôi đã tự hỏi những gì là lỗi? Làm thế nào để sửa nó nếu không thay thế định nghĩa f
trong đó g
? Cảm ơn!
Cập nhật:
Cảm ơn! Hai câu hỏi:
(1) nếu chức năng test
tiếp tục lấy một đối số cho f
, bạn sẽ thêm một cái gì đó như thế test <- function(g.=g, T=1, f..=f){ g.(1,T, f.=f..) }
nào? Trong trường hợp có nhiều thu hồi hơn, nó là một thực hành tốt và an toàn thêm nhiều hơn . ?
(2) nếu f
là một đối số không có chức năng, ví dụ g <- function(x, T, f=f){ exp(-f*x/T) }
và test <- function(g.=g, T=1, f=f){ g.(1,T, f=f.) }
, sẽ sử dụng cùng tên cho cả đối số phi chức năng chính thức và thực tế, một thực tiễn tốt và an toàn hay nó có thể gây ra một số rắc rối tiềm ẩn?