【R语言】环境空间

news2025/7/10 19:12:43

一、环境空间的特点

环境空间是一种特殊类型的变量,它可以像其它变量一样被分配和操作,还可以以参数的形式传递给函数。

R语言中环境空间具有如下3个特点:

1、对象名称唯一性

此特点指的是在不同的环境空间中可以有同名的变量出现,但是在同一个环境空间内不允许有同名的变量出现,即使对同一个变量进行多次赋值操作,其每次赋值的内存地址也都不相同。

# 定义变量x并查看其内存地址
x <- "你好,关关。"
data.table::address(x)
# 对x重新赋值然后查看其内存地址
x <- c(22,33,44,55)
data.table::address(x)

 

2、变量赋值传递性

如果把当前环境空间变量赋值给一个新变量,修改原有环境空间变量的值,则新环境空间中的变量值也会跟着改变。

# 创建环境空间变量e1
e1 <- new.env()
# 将环境空间变量e1赋值给e2
e2 <- e1
# 给e1环境空间中的变量赋值
e1$x <- c(1,2,3)
# 查看e2中的变量x
e2$x
# 比较e1和e2是否相同
identical(e1, e2)
# 查看e1和e2的环境地址是否相同
data.table::address(e1)
data.table::address(e2)

 

3、结构层次性

 在R语言的环境变量中,空环境是最顶层的环境空间,其次是base包的环境空间,最后是自定义的环境空间。可以通过递归查找父环境空间来查看整个环境空间的层次结构。

# 删除当前环境空间里的所有对象
rm(list = ls())
# 创建新的环境空间对象e1
e1 <- new.env()
# 编写递归查找父空间的函数
parent.find <- function(e) {
    print(e)
    if (is.environment(e) & !identical(emptyenv(), e)) {
        parent.find(parent.env(e))
    }
}
# 递归查找环境空间e1的父空间
parent.find(e1)

 

 从以上结果可知:内部环境e1的父环境是全局环境,接着是base包环境,和通过Autoloads函数加载的6个基础包环境(stats,graphics,grDevices,utils,datasets,methods),最顶层的是空环境。

二、环境空间种类

R语言中有5种环境:

全局环境:也叫用户环境,指在当前用户下R程序运行的环境空间。

内部环境:通过“new.env()”命令创建的环境空间,也可以是匿名的环境空间。

父环境:当前环境空间所处的上一层环境。

空环境:也叫顶层环境,指没有父环境的环境空间。

包环境:指R包封装的环境空间。

1、全局环境

# 全局环境(当前环境)
environment()

2、内部环境

e <- new.env()
e

3、父环境

# 查看环境e的父环境
parent.env(e)

4、空环境

emptyenv()

5、包环境

baseenv()

三、环境空间的使用方法

 R语言的base包有一些基础的函数,可以用来使用环境空间。

environment:查看函数的环境空间定义;

environmentName:查看环境空间的名字;

env.profile:查看环境空间的属性值;

new.env:创建一个新的环境空间;

is.environment:判断一个对象是否属于环境空间;

ls:列出当前环境空间中的所有对象;

search:查看当前环境空间中加载的R包;

exists:查看指定环境空间中的对象是否存在;

get:取出指定环境空间中的对象;

assign:给环境空间中的变量赋值;

rm:删除环境空间中的对象。

1、环境空间的访问

 查看函数所在的环境空间

# 查看mean函数所在的环境空间
environment(mean)

 新建环境空间

# 新建环境空间
e <- new.env(hash=T, parent = parent.frame(), size=29L)

 判断是否是环境空间

# 判断是否是环境空间
is.environment(e)

 

 查看环境空间的属性

# 查看环境空间的属性
env.profile(e)

设置环境空间的名字及查看其名字 

# 设置环境空间的名字及查看其名字
attr(e, "name") <- "Ning"
environmentName(e)

 

 2、环境空间的对象操作

清除当期环境空间中定义的所有对象,并创建新对象

# 清除当前环境空间中定义的所有对象,并创建新对象
rm(list = ls())
e1 <- new.env(hash=T, parent = parent.frame(), size = 29L)
e1

 给环境空间添加变量

# 给环境空间添加变量
e1$x <- c(2,3,5,7)
e1$y <- function(){
    "你好,关关。"
}
assign(x = "a", value = "你好,关关。", envir = e1)

查看当前环境空间和e1空间中的变量 

ls(e1)

 

查看环境空间中某个变量是否存在

# 查看e1环境变量中x变量是否存在
exists("x", envir=e1)

 

取出环境空间中的变量值

get("x", envir=e1)

给环境空间中的变量重新赋值

assign(x = "x", value = c(1,2,3,4,6,7), envir = e1)
get("x", envir=e1)

删除环境空间中的变量

rm(x, envir=e1)
ls(e1)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2292174.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

惰性函数【Ⅱ】《事件绑定的自我修养:从青铜到王者的进化之路》

【Ⅱ】《事件绑定的自我修养&#xff1a;从青铜到王者的进化之路》 1. 代码功能大白话&#xff08;给室友讲明白版&#xff09; // 青铜写法&#xff1a;每次都要问浏览器"你行不行&#xff1f;" function addEvent青铜版(element, type, handler) {if (window.add…

Vue3的el-table-column下拉输入实时查询API数据选择的实现方法

由于本人对el-table-column有下拉输入选择的要求&#xff0c;根据网上搜索的资料及本人优化&#xff0c;推出我比较满意的方法&#xff0c;供各位读者参考使用。 效果图 el-table-column写法 <el-table-columnlabel"货品编号"align"center"prop"…

[mmdetection]fast-rcnn模型训练自己的数据集的详细教程

本篇博客是由本人亲自调试成功后的学习笔记。使用了mmdetection项目包进行fast-rcnn模型的训练&#xff0c;数据集是自制图像数据。废话不多说&#xff0c;下面进入训练步骤教程。 注&#xff1a;本人使用linux服务器进行展示&#xff0c;Windows环境大差不差。另外&#xff0…

RFID涉密载体管控系统|支持国产化、自主研发

涉密载体管理系统DW-S402是一套成熟系统&#xff0c;是用于对各种涉密载体进行有效管理&#xff0c;实现对载体的智能化、规范化、标准化管理&#xff0c;广泛应用于保密、机要单位以及企事业单位等有载体保管需求的行业。 用户为对文件资料、存储介质等管理严格的单位&#x…

BUU14 [极客大挑战 2019]PHP1

用dirsearch扫描文件&#xff0c;扫了一万年什么也没扫出来 从网上看的wp&#xff0c;他们扫出来www.zip 这里直接用上了&#xff0c;以后有空再扫一遍 下载www.zip 在index.php中 说明要输入select 打开class.php <?php include flag.php;error_reporting(0);class…

数据分析师使用Kutools for Excel 插件

数据分析师使用Kutools for Excel 插件 Kutools for Excel 是一款功能强大的 Excel 插件&#xff0c;旨在提高 Excel 用户的工作效率&#xff0c;简化复杂的操作。它提供了超过 300 个增强功能&#xff0c;帮助用户快速完成数据管理、格式化、排序、分析等任务&#xff0c;特别…

【高级篇 / IPv6】(7.2) ❀ 04. 在60E上配置ADSL拨号宽带上网(IPv4) ❀ FortiGate 防火墙

【简介】除了单位用户以外&#xff0c;大部分个人用户目前使用的仍然是30E、50E、60E系列防火墙&#xff0c;固件无法达到目前最高版本7.6&#xff0c;这里以最常用的60E为例&#xff0c;演示固件版本7.2下实现ADSL拨号宽带的IPv6上网。由于内容比较多&#xff0c;文章分上、下…

基于LMS算法的自适应滤波器设计与MATLAB实现

1. 引言 自适应滤波器是信号处理领域的重要工具&#xff0c;能够根据输入信号的统计特性自动调整滤波器参数。其中&#xff0c;最小均方&#xff08;LMS&#xff09;算法因其计算简单、易于实现的特点&#xff0c;成为最常用的自适应滤波算法之一&#xff0c;广泛应用于噪声消…

【现代深度学习技术】深度学习计算 | 延后初始化自定义层

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈PyTorch深度学习 ⌋ ⌋ ⌋ 深度学习 (DL, Deep Learning) 特指基于深层神经网络模型和方法的机器学习。它是在统计机器学习、人工神经网络等算法模型基础上&#xff0c;结合当代大数据和大算力的发展而发展出来的。深度学习最重…

Java导出Excel简单工具类

一、maven配置 <!--jxl--><dependency><groupId>net.sourceforge.jexcelapi</groupId><artifactId>jxl</artifactId><version>2.6.12</version></dependency>二、工具类方法 package util2;import jxl.Workbook; impor…

蓝桥与力扣刷题(141 环形链表)

题目&#xff1a;给你一个链表的头节点 head &#xff0c;判断链表中是否有环。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 为了表示给定链表中的环&#xff0c;评测系统内部使用整数 pos 来表示链表尾连接到链表中的…

【小鱼闪闪】做一个物联网控制小灯的制作流程简要介绍(图文)

1、注册物联网云平台&#xff0c;这里选用巴法云 2.、新建主题 “ledtest” 3、 使用Arduino或Mixly软件编写单片机程序&#xff08;需要引用巴法云库文件&#xff09;&#xff0c;程序中订阅“ledtest”主题&#xff0c;用于接收单片机发送来的数据。此处会将连接的温度传感器…

图论常见算法

图论常见算法 算法prim算法Dijkstra算法 用途最小生成树&#xff08;MST&#xff09;&#xff1a;最短路径&#xff1a;拓扑排序&#xff1a;关键路径&#xff1a; 算法用途适用条件时间复杂度Kruskal最小生成树无向图&#xff08;稀疏图&#xff09;O(E log E)Prim最小生成树无…

BUU16 [ACTF2020 新生赛]BackupFile1

扫到index.php.bak 实在扫不出来可以试试一些常有的文件&#xff0c;比如flag.php&#xff08;flag.php.bak&#xff09;&#xff0c;index.php&#xff08;index.php.bak&#xff09; <?php include_once "flag.php";if(isset($_GET[key])) {$key $_GET[key…

运维之MySQL锁机制(MySQL Lock Mechanism for Operation and Maintenance)

运维之MySQL锁机制 锁是一种常见的并发事务的控制方式。MySQL数据库中的锁机制主要用于控制对数据的并发访问&#xff0c;防止多个用户或进程同时对同一数据进行读写操作&#xff0c;从而避免数据不一致和丢失更新等问题。锁机制确保数据的一致性&#xff0c;保证在多个事务操作…

一文速览DeepSeek-R1的本地部署——可联网、可实现本地知识库问答:包括671B满血版和各个蒸馏版的部署

前言 自从deepseek R1发布之后「详见《一文速览DeepSeek R1&#xff1a;如何通过纯RL训练大模型的推理能力以比肩甚至超越OpenAI o1(含Kimi K1.5的解读)》」&#xff0c;deepseek便爆火 爆火以后便应了“人红是非多”那句话&#xff0c;不但遭受各种大规模攻击&#xff0c;即便…

Kubernetes学习之包管理工具(Helm)

一、基础知识 1.如果我们需要开发微服务架构的应用&#xff0c;组成应用的服务可能很多&#xff0c;使用原始的组织和管理方式就会非常臃肿和繁琐以及较难管理&#xff0c;此时我们需要一个更高层次的工具将这些配置组织起来。 2.helm架构&#xff1a; chart:一个应用的信息集合…

MyBatis-Plus速成指南:通用枚举 多数据源

通用枚举&#xff1a; 概述&#xff1a; 表中有些字段值是固定的&#xff0c;例如性别(男或女)&#xff0c;此时我们可以使用 MyBatis-Plus 的通用枚举来实现 数据库表添加字段&#xff1a; 创建通用枚举类型&#xff1a; Getter public enum SexEnum {MALE(1, "男"…

Android项目中使用Eclipse导出jar文件

2014年3月24日 天气晴朗 关于打包Android组件肯定是有用到的&#xff0c;比如开发了一个模块&#xff0c;为了更好的复用&#xff0c;我们可能会将它打包成jar文件方便其他项目引用。这个很好理解&#xff0c;也很简单。网上有一堆关于用Eclipse将Android项目打包成jar文件的&…

网络安全学习 day4

防火墙的安全策略 规则--策略 条件 --- 检查报文的依据&#xff0c;防火墙将报文中携带的信息与条件逐一进行对比&#xff0c; 以此来判断报文是否是 匹配的 。不同的匹配条件之间属于 “ 与 ” 关系&#xff1b;相同的匹配条件中不同的参数信息之间的关系为 “ 或 ” 关系。…