在 R 中创建纯函数

Creating a Pure function in R

我习惯在 Mathematica 中使用纯函数。我如何在 R 中使用它们?例如:

给定一个数字列表,我想根据数字是否为 positive/negative 分配 TRUE/FALSE。

z <- do.call(rnorm,list(n=10))            # Generate 10 numbers
f <- function(x) { x > 0 ? TRUE : FALSE } # Searching for proper syntax
b <- lapply(z,f)

谢谢

狭义翻译,您的函数将是:

f <- function(x) { if (x > 0)  TRUE else FALSE } 

(您不需要使用 ifelse(),因为这是 x 将是标量(即长度为 1 的向量)的上下文)

f <- function(x) { x > 0 }

会在您的 lapply 调用中给出相同的结果:

lapply(z,">",0)

如上所述,您可以使用ifelse(z>0,TRUE,FALSE)。 但是不需要指定逻辑 return 值,因为 z>0 的结果已经是一个逻辑向量。惯用的方法是

z <- rnorm(10)   ## no need for do.call() in this example
z > 0

(逻辑比较在 R 中矢量化)

真的很简单:

b = z > 0

R 中的大多数简单操作都已矢量化。