由于R 的语法限制,其并没有py 中通过lambda
创建匿名函数的功能。
但也可以通过其他函数来使用匿名函数,比如apply 家族。但由于R 的函数声明比py 相对复杂(需要声明function 来创建),因此语句上也复杂一些:
> sapply(c(-2, -0.5, 0, 0.5, 1, 1.5), function(x) if(abs(x) <= 1) x**2 else 1)
[1] 1.00 0.25 0.00 0.25 1.00 1.00
类似python,R 中也有Filter 函数:
Filter(fn, obj)
比如:
> Filter(function(x) is.numeric(x), list(1,2,'sd'))
[[1]]
[1] 1
[[2]]
[1] 2
此外函数integrate 也接受函数作为参数的。
简单理解来说,任何可以接受函数作为参数的函数,都可以使用匿名函数。