zoukankan      html  css  js  c++  java
  • 《R语言入门与实践》第六章:R 的环境系统

    前言

    这一章在对象的基础之上,讲解了对象所处的环境,进一步讲了环境对对象的作用,以及如何使用环境.
    结构如下:

    1. 环境的定义和操作
    2. 环境的规则
    3. 制作闭包

    环境

    R 环境的定义

    在 R 中,每一个数据对象都储存在一个环境中,每一个环境都与一个父环境相连,这样的父子环境构成一个分层的树形结构.

    特点:

    与计算机文件系统相似,但是不支持自上而下的搜索.

    R 环境的操作

    environment() 查看活动环境

    活动环境:即 user workspace(用户工作区),命令行中运行的命令在 R_GlobalEnv(全局环境)中工作.
    功能:查看活动环境

    assign() 取值

    格式:
    assign("new", "Hello World!", envir = globalenv() )
    assign 有三个参数:

    1. 对象的名称:字符串格式的名称
    2. 对象的取值
    3. 对象所在环境的名称

    功能:在特定的环境中,创建一个含有特定的去值的数据对象.

    parent.env() 查看父环境

    功能:查看父环境
    格式: parent.env(globalenv())
    其中的参数为环境的调用函数.
    在 R 中,有三种环境可以调用,分别是:

    1. R_GlobalEnv 全局环境: globalenv()
    2. base 基环境: baseenv()
    3. R_EmptyEnv 空环境:emptyenv()

    R 环境的规则

    作用域规则

    在命令行工作的前提下,活动环境为全局环境
    规则如下:

    1. 首先在全局环境中搜索对象
    2. 如果没有搜索到对象,那么进行该环境的父环境继续搜索对象.

    函数工作环境

    运行函数时,函数本身创建一个临时的工作环境.
    原环境:函数工作环境(调用环境)的父环境

    注意:

    1. 在命令行创建的函数的原环境为 R_GlobalEnv
    2. 对于其他函数,函数第一次运行所在的环境为该函数运行的父环境

    Closure 闭包

    定义:

    由于函数中存在位置处于 R_GlobalEnv 中的数据对象.而 R_GlobalEnv 时常发生变化,因此为了安全,将 R_GlobalEnv 的参数即函数打包在一起,使得函数调用时,能够在当前环境直接调用.称为「闭包」.

    格式:

    setup <- function(deck) {
    DECK <- deck

    DEAL <-function(){
    card <- deck[1, ]
    assign("deck", deck[-1, ], envir = parent.env(enviroment()))
    card
    }





  • 相关阅读:
    Google-Hack
    DnsLog盲注
    utf-8编码转换问题
    sql注入 无列名注入
    Python正则
    变形--缩放 scale()
    变形--扭曲 skew()
    变形--旋转 rotate()
    Css3中的变形与动画
    关于伪类元素:before和:after
  • 原文地址:https://www.cnblogs.com/FBsharl/p/10784811.html
Copyright © 2011-2022 走看看