R:环境和变量作用域的问题


    在R语言的文献中,函数被证实地称为“闭包(closure)”。函数不仅包括参数和函数体,也包括它的“环境(environment)”。环境是由创建函数时出现的对象集构成。

 

►顶层环境

> w <- 12> f <- function( y ){

+     d <- 8

+     h <- function(){

+         return ( d*(w+y) )

+     }

+     return ( h() )

+ }

> environment( f )

<environment: R_GlobalEnv>

    此例中,函数f()是在顶层(解释器命令提示符下)构建的,于是它处于顶层环境。顶层环境在R的输出结果里表示为R_GlobalEnv,不过,它常与R代码的.GlobalEnv混淆。如果以批处理方式运行R程序,也会被认为在顶层。

    函数ls()会把某个环境中的所有对象列举出来。如果,在顶层调用它,就会得到顶层的环境下的对象名单。用ls.str()可以获得更多的信息。

    在函数中调用不带参数的ls()会返回当前的局部变量(包括参数)。使用envir参数,ls会输出函数调用链中任何一个框架的局部变量名。

 

►变量作用域的层次

    在R语言中,因为函数属于对象,在函数中定义一个函数是可以实现的,有时从面向对象编程封装的目的来看,这样做

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值