5
Załóżmy, że mam funkcję, która pobiera argument k
i zwraca inną funkcję, która pobiera argument n
, ale używa w swojej treści funkcji k
.Sposób drukowania treści funkcji za pomocą przeanalizowanej zmiennej
makeFn <- function(k) {
function(n){
rep(k,n)
}
}
five <- makeFn(5)
five(3)
# [1] 5 5 5
body(five)
# {
# rep(k, n)
# }
Jak mogę wydrukować ciało five
tak, że pokazuje rep(5,n)
zamiast rep(k,n)
?
Jakich elastycznych rozwiązań potrzebujesz? Czy istnieje więcej poziomów funkcji zagnieżdżonych? W tym prostym przypadku możesz użyć 'substitute' z jego wygodnym argumentem" env ". Ponieważ 'substitute' nie oceni swojego pierwszego argumentu, musimy skonstruować wywołanie typu' eval (call ("substitute", body (five), environment (five))) ' –