ПочемуИспользуя те же имена аргументов для функции, определенные внутри другой функции
f <- function(a) {
g <- function(a=a) {
return(a + 2)
}
return(g())
}
f(3) # Error in a + 2: 'a' is missing
вызывают ошибку? Это как-то связано с аргументом a = a, особенно с тем, что имена переменных одинаковы. Что именно происходит?
Вот некоторые подобные фрагменты кода, которые работают, как и ожидалось:
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
и сообщение об ошибке в R 3.1.1 является 'Ошибка в g(): Обещание уже оценивается: рекурсивный аргумент аргумента по умолчанию или более ранние проблемы? ' – Roland
Это гораздо полезнее, чем сообщение об ошибке, которое я видел (Ошибка: 'a' отсутствует). У меня есть R версии 3.0.2 (2013-09-25) - "Frisbee Sailing" – Adrian