Tại saoSử dụng tên lập luận tương tự cho một chức năng được xác định trong chức năng khác
f <- function(a) {
g <- function(a=a) {
return(a + 2)
}
return(g())
}
f(3) # Error in a + 2: 'a' is missing
nguyên nhân lỗi? Nó có một cái gì đó để làm với a = một đối số, đặc biệt là với thực tế là các tên biến là như nhau. Chính xác thì điều gì đang xảy ra vậy?
Dưới đây là một số điểm giống nhau về mã mà làm việc như mong đợi:
f <- function(a) {
g <- function(a) {
return(a + 2)
}
return(g(a))
}
f(3) # 5
f <- function(a) {
g <- function(g_a=a) {
return(g_a + 2)
}
return(g())
}
f(3) # 5
g <- function(a) a + 2
f <- function(a) g(a)
f(3) # 5
và thông báo lỗi trong R 3.1.1 là 'Lỗi trong g(): lời hứa đã được đánh giá: tham chiếu mặc định đệ quy hoặc các vấn đề trước đó? ' – Roland
Điều đó hữu ích hơn nhiều so với thông báo lỗi tôi thấy (Lỗi: 'a' bị thiếu). Tôi có phiên bản R 3.0.2 (2013-09-25) - "Ném dĩa nhựa" – Adrian