如何隐藏长计算的中间值?

时间:2018-02-01 22:31:37

标签: r scope

我正在学习R。

我需要做一个复杂的计算,产生一个数字。为了便于阅读,我将其分成几部分。因为我不想污染全局命名空间,所以我使用虚函数:

global <- somevalue  # I know globals are a horrid practice
foo <- function()
{
    a <- some complex computation
    b <- other complex or at least long formulas

    a + b  # result
}
res <- foo()

由于以下几个原因,这感觉不对:

  • 我仍然使用foo()
  • 进行污染
  • 有太多的样板

一种解决方案是使用管道,但我不想,因为变量名称具有表现力和重要性。

在C ++中,我会使用一个立即调用的函数表达式:

const auto res = [&global] () { /*compute, compute*/; return a + b; } ();

如何干净地计算R中的结束值,同时隐藏中间结果?

1 个答案:

答案 0 :(得分:0)

一种选择是尝试使用local功能。这样您就不必在全局环境中创建函数或存储中间变量:

res <- local({a <- 1
              b <- 2
              return(a+b)})