局部变量的使用(Usage of local variables)

2019-07-19 16:18发布

问题:

如何在R-码的范围内定义的局部变量。

例:

在C ++中下面的例子中定义了一个范围,并且该范围内的变量声明在外部代码是不确定的。

{
     vector V1 = getVector(1);
     vector V1(= getVector(2);
     double P = inner_product(V1, V2);
     print(P);
}
// the variable V1, V2, P are undefined here!

注:此代码只是为了说明这个想法。

这种做法的优点是:

  • 保持全局命名空间干净;
  • 简化的代码;
  • 去除模糊度,特别是当一个变量被重新使用而不初始化。

在R,在我看来,这个概念只是存在的内部函数定义。 因此,为了再现前面的示例代码中,我需要做的是这样的:

dummy <- function( ) {
     V1 = c(1,2,3);
     V2 = c(1,2,3);
     P = inner_product(V1, V2);
     print(P);
}
dummy( );
# the variable V1, V2, P are undefined here!

或者,在一个更加模糊的方式,声明一个匿名函数防止函数调用:

(function() { 
     V1 = c(1,2,3);
     V2 = c(1,2,3);
     P = inner_product(V1, V2);
     print(P);
})()
# the variable V1, V2, P are undefined here!

有没有更优雅的方式来创建本地变量?

Answer 1:

使用local 。 使用您的示例:

local({ 
     V1 = c(1,2,3);
     V2 = c(1,2,3);
     P = inner_product(V1, V2);
     print(P);
})
# the variable V1, V2, P are undefined here!


Answer 2:

您可以创建一个新的environment在那里您的变量可以被定义; 这是怎样一个函数内的局部范围定义。

你可以阅读更多关于此这里

检查帮助environment以及即输入你的[R控制台?environment



文章来源: Usage of local variables
标签: r scope