2.3 对象和它的模式与属性
R是一种基于对象的语言,R的对象包含了若干个元素作为其数据,另外还可以有一些特殊数据称为属性,并规定了一些特定操作(如打印、绘图)。比如,一个向量是一个对象,一个图形也是一个对象。R对象分为单纯对象和复合对象两种,单纯对象的所有元素都是同一种基本类型(如数值、字符串),元素不再是对象;复合对象的元素可以是不同类型的对象,每个元素是一个对象。
2.3.1 固有属性:mode 和length
mode(c(1,3,5)>5)
z<-0:9
is.numeric(z)
is.character(z)
length(2:4)
length(z)
强制类型转换
digits<-as.character(z);digits
d<-as.numeric(digits);d
2.3.2 修改对象的长度
x<-numeric();x
x[3]<-17;x
x<-1:3
x<-4:9
x<-x[1:2];x
alpha <- 1:10
alpha <- alpha[2*1:5];alpha
length(alpha)<- 3;alpha
2.3.3 attributes() 和 attr()函数
attributes(object)返回对象object的各特殊属性组成的列表,不包括固有属性mdoe和length
x<- c(apple=2.5,orange=2.1);x
attributes(x)
用attr(object,name)的形式存取对象object的名为name的属性
attr(x,"names")
attr(x,"names")<- c("apple","grapes");x
attr(x,"type");attr(x,"type")<-"fruit";x
attributes(x)
2.3.4 对象的class属性
在R中可以用特殊的class属性来支持面向对象的编程风格,对象的class属性用来区分对象的类,可以写出通用函数根据对象类的不同进行不同的操作,比如,print()函数对于向量和矩阵的显示方法就不同,plot()函数对不同类的自变量做不同的图形
为了暂时去掉一个有类的对象的class属性,可以用unclass(object)