9

问题:

如何在 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!

问题

有没有更优雅的方法来创建局部变量?

4

2 回答 2

13

Use local. Using your example:

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!
于 2013-02-10T00:35:20.913 回答
1

You can create a new environment where your variable can be defined; this is how the local scope within a function is defined.

You can read more about this here

check the help for environment as well i.e. type in your R console ?environment

于 2013-02-10T00:26:46.053 回答