由于R 的语法限制,其并没有py 中通过lambda 创建匿名函数的功能。

    但也可以通过其他函数来使用匿名函数,比如apply 家族。但由于R 的函数声明比py 相对复杂(需要声明function 来创建),因此语句上也复杂一些:

    1. > sapply(c(-2, -0.5, 0, 0.5, 1, 1.5), function(x) if(abs(x) <= 1) x**2 else 1)
    2. [1] 1.00 0.25 0.00 0.25 1.00 1.00

    类似python,R 中也有Filter 函数:

    1. Filter(fn, obj)

    比如:

    1. > Filter(function(x) is.numeric(x), list(1,2,'sd'))
    2. [[1]]
    3. [1] 1
    4. [[2]]
    5. [1] 2

    此外函数integrate 也接受函数作为参数的。

    简单理解来说,任何可以接受函数作为参数的函数,都可以使用匿名函数。