【R语言】环境空间
一、环境空间的特点
环境空间是一种特殊类型的变量,它可以像其它变量一样被分配和操作,还可以以参数的形式传递给函数。
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)

相关文章:
【R语言】环境空间
一、环境空间的特点 环境空间是一种特殊类型的变量,它可以像其它变量一样被分配和操作,还可以以参数的形式传递给函数。 R语言中环境空间具有如下3个特点: 1、对象名称唯一性 此特点指的是在不同的环境空间中可以有同名的变量出现&#x…...
【系统架构设计师】分布式数据库透明性
目录 1. 说明2. 分片透明3. 复制透明4. 位置透明5. 逻辑透明(局部数据模型透明)6.例题6.1 例题1 1. 说明 1.在分布式数据库系统中,分片透明、复制透明、位置透明和逻辑透明是几个重要的基本概念。2.分片透明、复制透明、位置透明和逻辑透明是…...
openpnp2.2 - 环境搭建 - 编译 + 调试 + 打包
文章目录 openpnp2.2 - 环境搭建 - 编译 调试 打包概述笔记前置任务克隆代码库切到最新的tag清理干净编译工程关掉旧工程打开已经克隆好的openpnp2.2工程将IDEA的SDK配置为openjdk23 切换中英文UI设置JAVA编译器 构建工程跑测试用例单步调试下断点导出工程的JAR包安装install…...
OpenCV:图像修复
目录 简述 1. 原理说明 1.1 Navier-Stokes方法(INPAINT_NS) 1.2 快速行进方法(INPAINT_TELEA) 2. 实现步骤 2.1 输入图像和掩膜(Mask) 2.2 调用cv2.inpaint()函数 2.3 完整代码示例 2.4 运行结果 …...
QT全局所有QSS样式实时切换
方法如下: void loadQss(int qssType) {QString name;if (qssType 1)name ":/qss/day.qss";elsename ":/qss/night.qss";QFile file(name);file.open(QFile::ReadOnly);QString qss;qss file.readAll();qApp->setStyleSheet(qss);file.…...
MySQL三大版本的演进
三大版本的演进 文章目录 三大版本的演进一:5.6版本(大跃进时期)1:支持只读事务2:innodb存储引擎增强2.1:缓冲池刷盘策略优化2.2:BufferPool缓冲池预热 3:新增Performance_Schema库监…...
利用 IMU 估计人体关节轴向和位置 —— 论文推导
Title: 利用 IMU 估计人体关节轴向和位置 —— “Joint axis and position estimation from inertial measurement data by exploiting kinematic constraints” —— 论文推导 文章目录 I. 论文回顾II. 铰接关节的约束1. 铰接关节约束的原理2. 铰接关节约束的梯度3. 铰接关节约…...
脚本一键生成管理下游k8s集群的kubeconfig
一、场景 1.1 需要管理下游k8s集群的场景。 1.2 不希望使用默认的cluster-admin权限的config. 二、脚本 **重点参数: 2.1 配置变量。 1、有单独namespace的权限和集群只读权限。 2、自签名的CA证书位置要正确。 2.2 如果配置错误,需要重新…...
数据库系统概念第六版记录 三
外码约束(Foreign Key Constraint) 外码(Foreign Key, FK)是关系数据库中的一个约束,它用于保证表之间的引用完整性。外码的值必须: 要么存在于被引用表的主键列中,要么为空(NULL&…...
YOLOv11-ultralytics-8.3.67部分代码阅读笔记-files.py
files.py ultralytics\utils\files.py 目录 files.py 1.所需的库和模块 2.class WorkingDirectory(contextlib.ContextDecorator): 3.def spaces_in_path(path): 4.def increment_path(path, exist_okFalse, sep"", mkdirFalse): 5.def file_age(path__fi…...
微信小程序案例1——制作猫眼电影底部标签导航栏
文章目录 一、项目步骤1 新建一个无AppID的movie项目2将准备好的底部标签导航图标拷贝到movie项目下面(将图标文件夹image放到项目文件夹里)3 打开App.json配置文件,在pages数组里添加4个页面路径:电影“pages/movie/movie”、影院“pages/cinema/cinema…...
【大数据技术】搭建完全分布式高可用大数据集群(Kafka)
搭建完全分布式高可用大数据集群(Kafka) kafka_2.13-3.9.0.tgz注:请在阅读本篇文章前,将以上资源下载下来。 写在前面 本文主要介绍搭建完全分布式高可用集群 Kafka 的详细步骤。 注意: 统一约定将软件安装包存放于虚拟机的/software目录下,软件安装至/opt目录下。 安…...
【服务器知识】如何在linux系统上搭建一个nfs
文章目录 NFS网络系统搭建**1. 准备工作****2. 服务器端配置****(1) 安装 NFS 服务****(2) 创建共享目录****(3) 配置共享规则****(4) 生效配置并启动服务****(5) 防火墙配置** **3. 客户端配置****(1) 安装 NFS 客户端工具****(2) 创建本地挂载点****(3) 挂载 NFS 共享目录***…...
图片画质增强:轻松提升画质
前言: 今天给大家推荐一款非常实用的图片画质增强软件,它无需联网即可使用,完全离线操作,这款软件基于先进的深度学习技术,能够对模糊图片进行强大的高清处理,效果令人惊艳。 图片画质增强:一…...
vscode快速接入deepseek 实践操作
背景说明 在deepseek快速火爆的情况下,也想自己体验一把。看看在vscode中集成进来,方便平时的脚本开发。对于年纪大的人还是非常方便的。 操作过程 安装continue 打开vscode进入扩展市场,搜索安装 安装完成就是上面的样子,会…...
mapbox进阶,添加绘图扩展插件,绘制圆形
👨⚕️ 主页: gis分享者 👨⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨⚕️ 收录于专栏:mapbox 从入门到精通 文章目录 一、🍀前言1.1 ☘️mapboxgl.Map 地图对象1.2 ☘️mapboxgl.Map style属性1.3 ☘️MapboxDraw 绘图控件二、🍀添加绘图扩…...
Cursor 与多语言开发:全栈开发的利器
引言 全栈开发要求开发者跨越前端、后端、数据库甚至数据科学等多个技术领域,而不同技术栈往往需要切换工具和思维方式。Cursor 作为一款 AI 驱动的智能编程助手,凭借其对 20 编程语言 和主流框架的深度支持,正在成为全栈开发的“瑞士军刀”…...
2025 CCF BDCI|“基于TPU平台的OCR模型性能优化”一等奖作品
2024年12月,中国计算机学会在海南博鳌成功举办了第十二届CCF大数据与计算智能大赛(简称2024 CCF BDCI)。本届比赛的算能赛道吸引了1748名选手报名,经过激烈角逐,北京航空航天大学的“常务副SOTA”团队脱颖而出…...
FPGA的IP核接口引脚含义-快解
疑问 手册繁琐,怎样快速了解IP核各输入输出接口引脚的含义。 答疑 不慌不慌,手册确实比较详细但繁琐,如何快速知晓该部分信息,涛tao道长给你们说,简单得很,一般新入门的道友有所不知,往往后面…...
数据库高安全—审计追踪:传统审计统一审计
书接上文数据库高安全—角色权限:权限管理&权限检查,从权限管理和权限检查方面解读了高斯数据库的角色权限,本篇将从传统审计和统一审计两方面对高斯数据库的审计追踪技术进行解读。 4 审计追踪 4.1 传统审计 审计内容的记录方式通…...
WELearn网课助手:5分钟掌握智能学习,告别熬夜刷课
WELearn网课助手:5分钟掌握智能学习,告别熬夜刷课 【免费下载链接】WELearnHelper 显示WE Learn随行课堂题目答案;支持班级测试;自动答题;刷时长;基于生成式AI(ChatGPT)的答案生成 项目地址: https://git…...
PlantUML Editor:5分钟学会用代码绘制专业UML图的终极工具
PlantUML Editor:5分钟学会用代码绘制专业UML图的终极工具 【免费下载链接】plantuml-editor PlantUML online demo client 项目地址: https://gitcode.com/gh_mirrors/pl/plantuml-editor 还在为复杂的UML图表绘制而烦恼吗?PlantUML Editor是一款…...
6541616
56465651...
去人类中心化研究引擎:AI如何突破学科壁垒驱动科研创新
1. 项目概述:一个“去人类中心化”的研究引擎最近在GitHub上看到一个挺有意思的项目,叫“De-Anthropocentric-Research-Engine”,直译过来就是“去人类中心化研究引擎”。第一眼看到这个标题,你可能和我一样,脑子里会冒…...
Mastra AI编排框架:构建生产级智能工作流的完整指南
1. 项目概述:一个面向开发者的AI应用编排框架最近在折腾AI应用开发的朋友,估计都绕不开一个核心痛点:如何把不同的AI模型、工具和数据源高效地串联起来,形成一个稳定、可维护的智能工作流。无论是想做个智能客服,还是搞…...
AppleRa1n终极指南:5步免费绕过iOS 15-16 iCloud激活锁
AppleRa1n终极指南:5步免费绕过iOS 15-16 iCloud激活锁 【免费下载链接】applera1n icloud bypass for ios 15-16 项目地址: https://gitcode.com/gh_mirrors/ap/applera1n 你是否遇到过这样的情况:忘记了自己iPhone的Apple ID密码,或…...
被安排做“脏活累活”怎么办?聪明人把它变成了核心竞争力
在软件测试的职业旅程中,几乎每一位从业者都会遇到这样的时刻:领导把最繁琐的模块分给你,把重复度最高的回归用例交给你,把无人问津的旧系统兼容性测试派给你。这些任务往往技术含量看似不高、耗时巨大且难以在简历上写出亮点&…...
工业级加密漏洞检测工具Cryptoscope解析
1. Cryptoscope:工业级加密漏洞检测工具解析在软件开发领域,加密技术的正确使用一直是个棘手问题。我见过太多项目因为加密实现不当导致数据泄露——有的使用了已被证明不安全的算法,有的密钥管理存在严重缺陷,还有的甚至把加密密…...
基于Claude API构建本地化智能对话应用栈:从架构设计到生产部署
1. 项目概述与核心价值最近在尝试构建一个基于Claude API的本地化应用栈时,我发现了dtannen的claude-stacks项目。这本质上不是一个单一的应用程序,而是一个精心设计的、模块化的技术栈蓝图。它旨在为开发者提供一个快速启动和运行Claude API应用的完整解…...
MongoDB避坑指南:电脑名含中文导致 Invalid UTF-8 string 报错的完美解决
前言最近在配置 MongoDB 本地环境时,遇到了一个非常“玄学”的报错。明明按照教程一步步安装,环境变量也配好了,但无论是启动服务,还是使用 MongoDB Compass 连接本地数据库,都会直接报错。排查了半天,最后…...
