qoh*_*eth 6 functional-programming r
假设我有一个函数,它接受一些参数k并返回另一个带参数n但k在函数体中使用的函数.
makeFn <- function(k) {
function(n){
rep(k,n)
}
}
five <- makeFn(5)
five(3)
# [1] 5 5 5
body(five)
# {
# rep(k, n)
# }
Run Code Online (Sandbox Code Playgroud)
我怎样才能打印出five它所显示的身体rep(5,n)而不是rep(k,n)?
一种选择是将eval和结合起来bquote。
makeFn <- function(k) {
eval(bquote(function(n) rep(.(k),n)))
}
five <- makeFn(5)
body(five)
# rep(5, n)
Run Code Online (Sandbox Code Playgroud)
该.()符号告诉bquote我们计算括号中的内容,然后将结果包含在表达式中。