【发布时间】:2009-12-02 15:27:59
【问题描述】:
我recently discovered,您可以使用 if-else 块有条件地分配一个值。
y <- if(condition) 1 else 2
我意识到这个用例是有限的:如果你有矢量化代码,你会使用 ifelse 函数来代替。有一个性能优势:在我的机器上,if-else 在标量情况下的运行速度比 ifelse 快大约 35 倍(尽管您需要调用它数百万次才能注意到很大的不同)。
让我烦恼的是,我不知道为什么这段代码有效——我很惊讶它不只是抛出一个错误。
另一个例子表明,如果块的行为类似于函数——它们会自动返回块中的最后一个值(尽管您不能在其中使用 return 语句)。
y <- if(TRUE)
{
y <- 3
4
} # y is 4
基于此,我猜测可能是在你进入 if 块时创建了另一个环境,但似乎并非如此。
if(TRUE) sys.frames() # NULL
谁能告诉我幕后发生了什么?
【问题讨论】:
标签: r if-statement