管理 R 搜索路径 (like postgresql search_path?)

本文涉及的产品
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
云原生数据库 PolarDB MySQL 版,通用型 2核8GB 50GB
简介:
R 的搜索路径是一个层级结构,例如我们可以使用search()查看当前的层级。
> search()
[1] ".GlobalEnv"        "package:stats"     "package:graphics" 
[4] "package:grDevices" "package:utils"     "package:datasets" 
[7] "package:methods"   "Autoloads"         "package:base" 

说明当前有9个层级,从1开始编号直到9,当然也可以直接使用名字。
例如我们可以使用ls()或objects()看看每个层级的对象:

> ls(1)
[1] "x"
> ls(.GlobalEnv)
[1] "x"
> objects(2)
  [1] "acf"                  "acf2AR"               "add.scope"           
  [4] "add1"                 "addmargins"           "aggregate"           
  [7] "aggregate.data.frame" "aggregate.ts"         "AIC"        
......

现在我们可以创建一个数据框,并使用attach()将数据框绑定到第二个层级,其他层级顺序往后排。
> x <- data.frame(a=1:10,b=100:109,c=101:110)
> x
    a   b   c
1   1 100 101
2   2 101 102
3   3 102 103
4   4 103 104
5   5 104 105
6   6 105 106
7   7 106 107
8   8 107 108
9   9 108 109
10 10 109 110
> attach(x)

现在多了一个搜索路径x
> search()
 [1] ".GlobalEnv"        "x"                 "package:stats"    
 [4] "package:graphics"  "package:grDevices" "package:utils"    
 [7] "package:datasets"  "package:methods"   "Autoloads"        
[10] "package:base"

这个搜索路径的对象有哪些呢?
> ls(x)
[1] "a" "b" "c"
> ls(2)
[1] "a" "b" "c"

正好是数据框x的几个name,是的通过这种方法,可以直接使用数据框的对象,而不需要使用数据框来引用。
> a
 [1]  1  2  3  4  5  6  7  8  9 10
> b
 [1] 100 101 102 103 104 105 106 107 108 109
> c
 [1] 101 102 103 104 105 106 107 108 109 110

这些数据是不会被改变的,例如:
> a <- b
> a
 [1] 100 101 102 103 104 105 106 107 108 109

你看到的这个a是创建在1号搜索路径的,而不是2号搜索路径。
> ls(1)
[1] "a" "x"

所以只要删掉1号搜索路径的a, 又可以查看2号搜索路径的a了。它是没有变化的。
> ls(2)
[1] "a" "b" "c"
> rm(a)
> a
 [1]  1  2  3  4  5  6  7  8  9 10
> ls(1)
[1] "x"

解除数据框的绑定,
> detach(x)
> ls(x)
[1] "a" "b" "c"
> objects(x)
[1] "a" "b" "c"
> search()
[1] ".GlobalEnv"        "package:stats"     "package:graphics" 
[4] "package:grDevices" "package:utils"     "package:datasets" 
[7] "package:methods"   "Autoloads"         "package:base" 

解除绑定后,无法直接使用数据框中的对象。
> a
Error: object 'a' not found


[参考]
相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍如何基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
目录
相关文章
|
存储 Oracle 关系型数据库
postgresql数据库|wal日志的开启以及如何管理
postgresql数据库|wal日志的开启以及如何管理
2029 0
|
消息中间件 存储 关系型数据库
PostgreSQL技术大讲堂 - 第33讲:并行查询管理
PostgreSQL从小白到专家,技术大讲堂 - 第33讲:并行查询管理
586 1
|
SQL 存储 缓存
PostgreSQL函数管理接口
学习PostgreSQL服务端开发必须要对函数管理接口有比较深入的了解
|
关系型数据库 分布式数据库 数据库
PolarDB产品使用问题之如何进行PostgreSQL(简称PG)的全量和增量备份管理
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
关系型数据库 数据库 PostgreSQL
|
缓存 关系型数据库 MySQL
postgresql|数据库|序列Sequence的创建和管理
postgresql|数据库|序列Sequence的创建和管理
454 0
|
缓存 关系型数据库 数据库
PostgreSQL技术大讲堂 - 第22讲:CLOG作用与管理
从零开始学PostgreSQL技术大讲堂 - 第22讲:CLOG作用与管理
469 1
|
关系型数据库 数据库 数据安全/隐私保护
PostgreSQL技术大讲堂 - Part 6:PG用户与角色管理
PostgreSQL技术大讲堂 - Part 6:PG用户与角色管理
501 1
PostgreSQL技术大讲堂 - Part 6:PG用户与角色管理
|
关系型数据库 数据库 文件存储
PG技术大讲堂 - 第12讲:PostgreSQL wal作用与管理
PostgreSQL从小白到专家,技术大讲堂 - 第12讲:PostgreSQL wal作用与管理
374 1
|
关系型数据库 数据库 PostgreSQL
PG从小白到专家 - Part 11:PostgreSQL控制文件作用与管理
PG从小白到专家 - Part 11:PostgreSQL控制文件作用与管理
425 1

推荐镜像

更多