R:对象的管理


    R创建和控制的实体(entity)被称为对象。他们可以说变量,数组,字符串,函数,或者其他通过这些实体定义的更为一般性的结构。

    一个典型的R语言会话中,很可能产生了大量的对象。有许多工具可以用来管理这些对象。下面我们介绍下面几种工具:

Ю ls()函数

Ю rm()函数

Ю save()函数

Ю 一些可以查看对象结构的函数,如class()和mode()

Ю exists()函数

 

►用ls()函数列出所有对象

    在R会话过程中,对象是通过名字创建和保存的。ls()命令可以用来列出当前保存在R环境中现存的所有对象。其中一个有用的具名参数是pattern,该参数支持通配符。你可以让ls()列出所有名称具有特定模式的对象。

注:保存当前对象的地方被称为工作空间(workspace)。

> ls()     

 [1] "findruns"       "findruns1"      "first"          [4] "joe"            "kids"           "messy"          [7] "oddcount"       "pivot"          "preda"         [10] "predb"          "predc"          "print.employee"[13] "provit"         "Quicksort"      "QuickSort"     [16] "symdiff"        "therest"       

> ls( pattern = "pr" )   #列出所有名称中含有字符串“pr”的对象

[1] "preda"          "predb"          "predc"         [4] "print.employee" "provit"  

注:下列命令等价于ls():

> objects()

 

►用rm()函数删除特定的对象

    使用rm()函数可以删除掉不再使用的对象。rm()的一个具名参数list可以使删除多个对象变得更容易。 

> rm( findruns, findruns1, first, kids, messy )

> ls()

 [1] "joe"            "oddcount"       "pivot"          [4] "preda"          "predb"          "predc"          [7] "print.employee" "provit"         "Quicksort"     [10] "QuickSort"      "symdiff"        "therest"   

    下面的代码把所有的对象名称都赋值给list,这样就删除了所有对象:

rm( list = ls() )

可以结合ls()函数的参数pattern一起使用,使其功能更加强大。

rm( list = ls( pattern = "pr" ) )

    browseEnv()函数也很有用,可以在浏览器中显示所有的全局变量(或者在其他特定环境中的对象)。

 

►用save()函数报错对象集合

    在若干个对象上调用save()可以把这些对象写入硬盘,以待之后的load()恢复。

> save( hz, "hzfile" )

> load( "hzfile" )

 

►查看对象内部结构

    开发者经常需要知道某个库函数返回的对象内部的精确结构。如果文档没有给出足够信息,我们可以使用下面这些函数:class(),mode(),names(),attributes(),unclass(),str(),edit()。

 

    如果你只是打印一个对象,结果完全由与该类相关联的print()的版本决定,这样带来的简洁性往往隐藏或扭曲了一些有价值的信息,调用unclass()来打印结果可以解决这个问题。str()函数也可以达成同样的目的,但是更加紧凑。

注:对一个对象使用unclass()得到的结果仍然属于其基础类。

    names()函数能显示出对象有哪些组件,而attributes()函数除了显示对象的组件还会给出更多信息,特别是类名称。  

 

►exists()函数

    exists()函数根据其参数是否存在返回TRUE或者FALSE。要注意把参数放在引用号里。

> exists( "ac" )

[1] FALSE

    这个函数有什麽用?难道我们不是一只都知道有没有创建一个对象?也知道这个对象是否存在吗?

    答案是:不一定。如果你在编写一个通用代码,比如将会出现在R的CRAN代码库中,那么你的代码需要检查某个特定对象是否存在,如果不存在,则代码需要创建这个对象。

    写通用代码时,有时如果对象不存在,可能也需要调用load(),这就需要使用exists()来检查对象是否存在。

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值