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
    }





  • 相关阅读:
    【leetcode】1630. Arithmetic Subarrays
    【leetcode】1629. Slowest Key
    【leetcode】1624. Largest Substring Between Two Equal Characters
    【leetcode】1620. Coordinate With Maximum Network Quality
    【leetcode】1619. Mean of Array After Removing Some Elements
    【leetcode】1609. Even Odd Tree
    【leetcode】1608. Special Array With X Elements Greater Than or Equal X
    【leetcode】1603. Design Parking System
    【leetcode】1598. Crawler Log Folder
    Java基础加强总结(三)——代理(Proxy)Java实现Ip代理池
  • 原文地址:https://www.cnblogs.com/FBsharl/p/10784811.html
Copyright © 2011-2022 走看看