获取当前调用的函数来编写匿名递归函数

Jer*_*oen 5 r

如何在函数内获取递归应用的当前函数?这是一个简单的例子:

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]]没有帮助匿名函数.

ags*_*udy 5

例如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)