【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)

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

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

相关文章

【redis】缓存设计规范

本文是 Redis 键值设计的 14 个核心规范与最佳实践&#xff0c;按重要程度分层说明&#xff1a; 一、通用数据类型选择 这里我们先给出常规的选择路径图。 以下是对每个步骤的分析&#xff1a; 是否需要排序&#xff1f;&#xff1a; zset&#xff08;有序集合&#xff09;用…

2021 年 9 月青少年软编等考 C 语言五级真题解析

目录 T1. 问题求解思路分析T2. 抓牛思路分析T3. 交易市场思路分析T4. 泳池思路分析T1. 问题求解 给定一个正整数 N N N,求最小的 M M M 满足比 N N N 大且 M M M 与 N N N 的二进制表示中有相同数目的 1 1 1。 举个例子,假如给定 N N N 为 78 78 78,二进制表示为 …

Windows 中学习Docker环境准备2、Docker Desktop中安装ubuntu

Windows 中学习Docker环境准备1、Win11安装Docker Desktop Windows 中学习Docker环境准备2、Docker Desktop中安装ubuntu Windows 中学习Docker环境准备3、在Ubuntu中安装Docker 需要更多Docker学习视频和资料&#xff0c;请文末联系 一、安装 Docker Desktop 下载 Docker…

LabVIEW2025中文版软件安装包、工具包、安装教程下载

下载链接&#xff1a;LabVIEW及工具包大全-三易电子工作室http://blog.eeecontrol.com/labview6666 《LabVIEW2025安装图文教程》 1、解压后&#xff0c;双击install.exe安装 2、选中“我接受上述2条许可协议”&#xff0c;点击下一步 3、点击下一步&#xff0c;安装NI Packa…

PHP ODBC:深入探索数据库连接与交互技术

PHP ODBC:深入探索数据库连接与交互技术 引言 PHP作为一种广泛使用的服务器端脚本语言,在Web开发中扮演着重要角色。在数据处理方面,PHP与数据库的交互是其核心功能之一。ODBC(Open Database Connectivity)作为一种标准数据库访问接口,允许PHP应用程序与各种数据库系统…

AUTOSAR汽车电子嵌入式编程精讲300篇-基于FPGA的CAN FD汽车总线数据交互系统设计

目录 前言 汽车总线以及发展趋势 汽车总线技术 汽车总线发展趋势 CAN FD总线国内外研究现状 2 系统方案及CAN FD协议分析 2.1系统控制方案设计 2.2 CAN FD总线帧结构分析 2.2.1数据帧分析 2.2.2远程帧分析 2.2.3过载帧分析 2.2.4错误帧分析 2.2.5帧间隔分析 2.3位…

BUU17 [RoarCTF 2019]Easy Calc1

自用 源代码 $(#calc).submit(function(){$.ajax({url:"calc.php?num"encodeURIComponent($("#content").val()),type:GET,success:function(data){$("#result").html(<div class"alert alert-success"><strong>答案:&l…

5. k8s二进制集群之ETCD集群部署

下载etcd安装包创建etcd配置文件准备证书文件和etcd存储目录ETCD证书文件安装(分别对应指定节点)创建证书服务的配置文件启动etcd集群验证etcd集群状态继续上一篇文章《k8s二进制集群之ETCD集群证书生成》下面介绍一下etcd证书生成配置。 下载etcd安装包 https://github.com…

Java并发编程笔记

Java并发基础知识补全 启动 启动线程的方式只有&#xff1a; 1、X extends Thread;&#xff0c;然后X.start 2、X implements Runnable&#xff1b;然后交给Thread运行 线程的状态 Java中线程的状态分为6种&#xff1a; 1. 初始(NEW)&#xff1a;新创建了一个线程对象&…

使用多模态大语言模型进行深度学习的图像、文本和语音数据增强

在过去的五年里&#xff0c;研究方向已从传统的机器学习&#xff08;ML&#xff09;和深度学习&#xff08;DL&#xff09;方法转向利用大语言模型&#xff08;LLMs&#xff09;&#xff0c;包括多模态方法&#xff0c;用于数据增强&#xff0c;以提高泛化能力&#xff0c;并在…

Windows Docker笔记-Docker拉取镜像

通过在前面的章节《安装docker》中&#xff0c;了解并安装成功了Docker&#xff0c;本章讲述如何使用Docker拉取镜像。 使用Docker&#xff0c;主要是想要创建并运行Docker容器&#xff0c;而容器又要根据Docker镜像来创建&#xff0c;那么首当其冲&#xff0c;必须要先有一个…

YOLOv11-ultralytics-8.3.67部分代码阅读笔记-autobatch.py

autobatch.py ultralytics\utils\autobatch.py 目录 autobatch.py 1.所需的库和模块 2.def check_train_batch_size(model, imgsz640, ampTrue, batch-1, max_num_obj1): 3.def autobatch(model, imgsz640, fraction0.60, batch_sizeDEFAULT_CFG.batch, max_num_obj1): …

【文件上传、秒传、分片上传、断点续传、重传】

文章目录 获取文件对象文件上传&#xff08;秒传、分片上传、断点续传、重传&#xff09;优化 获取文件对象 input标签的onchange方法接收到的参数就是用户上传的所有文件 <html lang"en"><head><title>文件上传</title><style>#inp…

Office/WPS接入DS等多个AI工具,开启办公新模式!

在现代职场中&#xff0c;Office办公套件已成为工作和学习的必备工具&#xff0c;其功能强大但复杂&#xff0c;熟练掌握需要系统的学习。为了简化操作&#xff0c;使每个人都能轻松使用各种功能&#xff0c;市场上涌现出各类办公插件。这些插件不仅提升了用户体验&#xff0c;…

FPGA的IP核接口引脚含义-快解

疑问 手册繁琐&#xff0c;怎样快速了解IP核各输入输出接口引脚的含义。 答疑 不慌不慌&#xff0c;手册确实比较详细但繁琐&#xff0c;如何快速知晓该部分信息&#xff0c;涛tao道长给你们说&#xff0c;简单得很&#xff0c;一般新入门的道友有所不知&#xff0c;往往后面…

GnuTLS: 在 pull 函数中出错。 无法建立 SSL 连接。

提示信息 [root@localhost ~]# wget https://download.docker.com/linux/static/stable/x86_64/docker-27.5.1.tgz --2025-02-06 12:45:34-- https://download.docker.com/linux/static/stable/x86_64/docker-27.5.1.tgz 正在解析主机 download.docker.com (download.docker.…

Python3+Request+Pytest+Allure+Jenkins 接口自动化测试[手动写的和AI写的对比]

我手动写的参考 总篇:Python3+Request+Pytest+Allure+Jenkins接口自动化框架设计思路_jenkins python3+request-CSDN博客 https://blog.csdn.net/fen_fen/article/details/144269072 下面是AI写的:Python3+Request+Pytest+Allure+Jenkins 接口自动化测试[AI文章框架] 在软…

告别手动操作!用Ansible user模块高效管理 Linux账户

在企业运维环境中&#xff0c;服务器的用户管理是一项基础但非常重要的任务。比如&#xff0c;当有新员工加入时&#xff0c;我们需要在多台服务器上为他们创建账户并分配合适的权限。而当员工离职或岗位发生变化时&#xff0c;我们也需要迅速禁用或删除他们的账户&#xff0c;…

ADC模数转换器概念函数及应用

ADC模数转换器概念函数及应用 文章目录 ADC模数转换器概念函数及应用1.ADC简介2.逐次逼近型ADC2.1逐次逼近型ADC2.2stm32逐次逼近型2.3ADC基本结构2.4十六个通道 3.规则组的4种转换模式3.1单次转换&#xff0c;非扫描模式3.2连续转换&#xff0c;非扫描模式3.3单次转换&#xf…

探索前端框架的未来:Svelte 的崛起

引言 在前端开发的世界里&#xff0c;框架更新换代的速度仿佛光速。从 jQuery 到 Angular&#xff0c;再到如今大热的 React 和 Vue&#xff0c;开发者们不断追逐更轻量、更快、更易于维护的框架。如今&#xff0c;Svelte 正悄然崛起&#xff0c;并引发了关于前端框架未来的热烈…