R语言入门——一文讲明白attach与detach

目录

引言

数据是我们在使用R语言做统计和数据分析相关的工作经常用到的对象。但是当数据太多的时候,我们会构造数据框列表数组矩阵等各种数据类型。但是数据每一列的索引就成了问题。尤其是在大量的重复性的调用时。这时候我们经常会使用attachdetach这两个函数来使我们的代码变得更简洁。本文就这两个函数进行讲解。

正文

构造数据

> rm(list=ls(all=TRUE))
> (Data <- data.frame(a = 1:5, b = 6:10))
  a  b
1 1  6
2 2  7
3 3  8
4 4  9
5 5 10
> (a <- 11:15)
[1] 11 12 13 14 15
> (c <- 16:20)
[1] 16 17 18 19 20

命令rm(list=ls(all=TRUE))用来删除R语言工作空间中的现有变量。我们构造的数据集合有数据框Data:含有变量a,b。两个全局变量:向量a,向量c

索引

正常的取用Data的数据会使用下面的命令(使用$或者data[i, j]的形式):

> Data$a
[1] 1 2 3 4 5
> Data[,1]
[1] 1 2 3 4 5
> Data$b
[1]  6  7  8  9 10
> Data[,2]
[1]  6  7  8  9 10

attach()

下面我们开始使用attach函数,进行索引。

> b
错误: 找不到对象'b'
> attach(Data)
The following object is masked _by_ .GlobalEnv:
    a
> a
[1] 11 12 13 14 15
> b
[1]  6  7  8  9 10

我们看到使用attach时,The following object is masked _by_ .GlobalEnv:a被提示。a这个变量除了是Data数据集的第一列元素,我们还在全局的环境中定义了11 12 13 14 15a这个向量。而后面输出a变量的值时,输出的时全局变量的值。再看b这个向量,在attach之前没有这个变量,但是在之后出现了b这个变量并且输出的是Data数据集中的第二列。
但是我们这时候想的到Dataa的数据,而不是全局中的a怎么办呢。直接Data$a就可以了。

> a
[1] 11 12 13 14 15
> Data$a
[1] 1 2 3 4 5

detach

attach之后一定不能忘记detach,这样会避免不必要的变量重名。使得一切回复到attach之前。

> detach(Data)
> a
[1] 11 12 13 14 15
> b
错误: 找不到对象'b'
> Data$a
[1] 1 2 3 4 5
> Data$b
[1]  6  7  8  9 10
> c
[1] 16 17 18 19 20

总结

上面就是attachdetach的具体用法。建议不熟悉R语言的初学者谨慎使用。最后希望可以帮助大家学习R语言。水平有限发现错误还望及时评论区指正,您的意见和批评是我不断前进的动力。

上一篇:MySQL 默认排序是什么


下一篇:docker容器container