R对象属性与槽

R的S4对象(S3对象没有明确类型定义,没有槽)同时具有属性和槽,槽是在类定义时定义的,是类的成员的变量。而属性是一种从外部附加的,可以附加在任何对象上,可被视为某种"标签"。如对象的class属性值,标识了对象所属的类别,可视为class标签标识了对象的类,class属性可以在外部被修改(个人观点:R将对象所属类别信息,暴露在了外部,并可以任意修改,R对象对类并没有很强的归属感,S4对象从名为"a"的类new出,也可以被任意修改为"b"类,即使b类的原型还没有定义,而对象类别信息发生变化,也只是class(对象)<-"b",内部slot等没有任何改变,但是这意味这此对象和a类脱离了关系,以后将不会按属于a类的对象来解释,泛型不会使用调用a类的方法,类似孩子甲过继给了家庭b,虽然甲基因属于a但法律上认为它属于b家庭)。

> setClass("a",representation(data="numeric")) #定义类"a",有一个data槽
> d<-new("a") #new 属于a的对象
> d
An object of class "a"
Slot "data":
numeric(0)      

> attributes(d)       #列出属性,槽被当作属性
$data
numeric(0)
$class
[1] "a"
attr(,"package")
[1] ".GlobalEnv"

> d@data<-5

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值