如何在函数内获取递归应用的当前函数?这是一个简单的例子:
myfun <- function(x) {
if(is.list(x)){
lapply(x, myfun)
} else {
length(x)
}
}
Run Code Online (Sandbox Code Playgroud)
我想把它变成匿名,但是我不知道lapply在没有名字时如何告诉使用当前函数.我尝试Recall但是这不起作用:
(function(x) {
if(is.list(x)){
lapply(x, Recall)
} else {
length(x)
}
})(cars)
Run Code Online (Sandbox Code Playgroud)
也match.call()[[1]]没有帮助匿名函数.
例如sys.function(0),递归计算列表的平方:
(function(x) {
if(length(x)>2){
lapply(x,sys.function(0))
} else {
x^2
}
})(list(1,2,3))
[[1]]
[1] 1
[[2]]
[1] 4
[[3]]
[1] 9
Run Code Online (Sandbox Code Playgroud)