ifelse 可以有效地用于没有 return 的输出吗?

Can ifelse be used effectively with outputs that have no return?

考虑以下示例代码:

b<-0
plot(0,0)
ranVec<-runif(100)
f1<-function()#ran 40% of the time
  {
    b<-b+1
    points(b,4)
  }
f2<-function()#ran 60% of the time
  {
    b<-b-1
    points(b,4)
  }

我目前正在处理非常相似的事情,我的下一行代码实际上是:

for(i in 1:100)
{
   if(ranVec[i]<=0.4) f1
   else f2
}

但是 ifelse 是否有可能实现前一个区块的结果?比如我真正想写的是:

ifelse(rawResults<=0.4, f1, f2)

但这可能会引发与输出长度有关的错误。

@r2evans 点,ifelse 是数据。对于函数,您可以使用 walk

之类的东西
purrr::walk(ranVec, ~if(.x <= 0.4) f1() else f2())

不确定您的实际应用是什么,但如果可以的话,如果您计算所有点(特别是如果您可以矢量化计算)然后将它们全部添加到绘图中,而不是一个,这样会更快一个。