r - 为什么我不能在 R 中使用 ifelse 分配函数?

标签 r functional-programming

在 R 中,当我尝试通过 ifelse 分配函数时,出现以下错误:

> my.func <- ifelse(cond, sqrt, identity)
Error in rep(yes, length.out = length(ans)) : 
  attempt to replicate an object of type 'builtin'

如果 condFALSE,则错误看起来相同,R 会提示

attempt to replicate an object of type 'closure'

我可以做什么来将两个函数之一分配给一个变量,这里发生了什么?

最佳答案

由于 ifelse 已向量化,并且不提供非向量化条件的特殊情况,因此参数将使用 rep(...) 进行复制。 rep(...) 对于闭包失败,例如示例中的情况。

解决方法是临时包装函数:

my.func <- ifelse(cond, c(sqrt), c(identity))[[1]]

关于r - 为什么我不能在 R 中使用 ifelse 分配函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21577818/

相关文章:

r - ggplot2:如何交换 y 轴和右刻面带以及如何排序刻面值

从两个向量 (n,1) 构建 R 距离矩阵

javascript - 这个函数式 Javascript 示例如何工作?

functional-programming - 如何找到scheme中S表达式的最大嵌套深度?

javascript - 组合不同的方法来计算嵌套列表中的元素

typescript - typescript 中带有n个参数的通用 curry 函数

r - 为什么 mean() 和 mean(aggregate()) 返回不同的结果?

css - 单选按钮的点和标签之间有更多空间

python - 如何找到以某种方式更改字符串的递归函数的基本情况

使用 coord_polar() 时旋转 x 轴文本