【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.pswp.cn/news/894938.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/894938.shtml
英文地址,請注明出處:http://en.pswp.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;并引發了關于前端框架未來的熱烈…