我曾经习惯在Mathematica中使用Pure函数。我如何在R中使用它们?例如:
给定一个数字列表,我想根据数字是正数还是负数来指定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)
由于
答案 0 :(得分:7)
缩小翻译,您的功能将是:
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)
。
但是没有必要指定逻辑返回值,因为z>0
的结果已经是逻辑向量。这样做的惯用方法是
z <- rnorm(10) ## no need for do.call() in this example
z > 0
(逻辑比较在R中向量化)
答案 1 :(得分:4)
非常简单:
b = z > 0
R中的大多数简单操作都已经过矢量化。