考虑以下伪r代码,我定义了两个布尔表达式。请注意,第二个是前6次的微不足道的分离。
testCondition1 <- function(testObject){tc(testObject)}
testCondition6 <- function(testObject){tc(testObject)|tc(testObject)|tc(testObject)|tc(testObject)|tc(testObject)|tc(testObject)}
现在我想测试为一个对象评估这些表达式需要多长时间才能使它们都成立。所以我做了这样的事情:
start.time <- Sys.time()
if (testCondition1(satisfyingObject)) {
print("end")
}
end.time <- Sys.time()
time.taken <- end.time - start.time
print(time.taken)
第二次我相应地替换了表达式。
使用testCondition1
评估为真的大约需要12秒,并打印&#34;结束&#34;因此。当我使用testCondition6
测试时,大约需要40秒。为什么会这样? r是否评估布尔表达式的每个部分?有没有更好的方法来加快速度?