楼主: kk22boy
22866 14

[学习分享] R语言编程入门:对象和类 [推广有奖]

  • 8关注
  • 95粉丝

一叶知秋

学科带头人

51%

还不是VIP/贵宾

-

TA的文库  其他...

计量经济与统计

SSCI、权威 论文写作及投稿经验

威望
1
论坛币
56594 个
通用积分
128.9629
学术水平
437 点
热心指数
492 点
信用等级
393 点
经验
67522 点
帖子
1589
精华
0
在线时间
2188 小时
注册时间
2005-3-10
最后登录
2024-4-2

初级热心勋章 初级信用勋章

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
R语言编程入门:对象和类


R是一种基于对象(Object)的语言,所以你在R语言中接触到的每样东西都是一个对象,一串数值向量是一个对象,一个函数是一个对象,一个图形也是一个对象。基于对象的编程(OOP)就是在定义类的基础上,创建与操作对象。

对象中包含了我们需要的数据,同时对象也具有很多属性(Attribute)。其中一种重要的属性就是它的类(Class),R语言中最为基本的类包括了数值(numeric)、逻辑(logical)、字符(character)、列表(list),在此基础上构成了一些复合型的类,包括矩阵(matrix)、数组(array)、因子(factor)、数据框(dataframe)。除了这些内置的类外还有很多其它的,用户还可以自定义新的类,但所有的类都是建立在这些基本的类之上的。

我们下面来用一个简单线性回归的例子来了解一下对象和类的处理。
# 创建两个数值向量x <- runif(100) y <- rnorm(100)+5*x# 用线性回归创建模型,存入对象modelmodel <- lm(y~x)

好了,现在我们手头上有一个不熟悉的对象model,那么首先来看看它里面藏着什么好东西。最有用的函数命令就是attributes(model),用来提取对象的各种属性,结果如下:

> attributes(model)
$names
[1] "coefficients"  "residuals"     "effects"     
[4] "rank"          "fitted.values" "assign"     
[7] "qr"            "df.residual"   "xlevels"     
[10] "call"          "terms"         "model"      

$class
[1] "lm"

可以看到这个对象的类是“lm”,这意味着什么呢?我们知道对于不同的类有不同的处理方法,那么对于modle这个对象,就有专门用来处理lm类对象的函数,例如plot.lm()。但如果你用普通的函数plot()也一样能显示其图形,Why?因为plot()这种函数会自动识别对象的类,从而选择合适的函数来对付它,这种函数就称为泛型函数(generic function)。你可以用methods(class=lm)来了解有哪些函数可适用于lm对象。

好了,我们已经知道了model的底细了,你还想知道x的信息吧。如果运行attributes(x),会发现返回了空值。这是因为x是一个向量,对于向量这种内置的基本类,attributes是没有什么好显示的。此时你可以运行mode(x),可观察到向量的类是数值型。如果运行mode(model)会有什么反应呢?它会显示lm类的基本构成是由list组成的。当然要了解对象的类,也可以直接用class(),如果要消除对象的类则可用unclass()

从上面的结果我们还看到names这个属性,这如同你到一家餐厅问服务生要一份菜单,输入names(model)就相当于问model这个对象:Hi,你能提供什么好东西吗?如果你熟悉回归理论的话,就可以从names里头看到它提供了丰富的回归结果,包括回归系数(coefficients)、残差(residuals)等等,调用这些信息可以就象处理普通的数据框一样使用$符号,例如输出残差可以用model$residuals。当然用泛型函数可以达到同样的效果,如residuals(model),但在个别情况下,这二者结果是有少许差别的。

我们已经知道了attributes的威力了,那么另外一个非常有用的函数是str(),它能以简洁的方式显示对象的数据结构及其内容,试试看,非常有用的。


转自:xccds1977.blogspot.com
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:R语言编程 语言编程 编程入门 R语言 Character character 语言编程 Object factor matrix

已有 6 人评分经验 学术水平 热心指数 信用等级 收起 理由
ryusukekenji + 1 热心帮助其他会员
风敲竹 + 100 + 5 + 5 + 5 精彩帖子
famousid + 1 + 1 + 1 观点有启发
epoh + 1 + 1 + 1 精彩帖子
吉林小王子 + 1 热心帮助其他会员
qoiqpwqr + 1 奖励积极上传好的资料

总评分: 经验 + 100  学术水平 + 7  热心指数 + 10  信用等级 + 7   查看全部评分

本帖被以下文库推荐

如果该贴对您有些许帮助,希望你能回复一下或者评一下热心指数!谢谢!
沙发
qoiqpwqr 发表于 2012-2-27 21:57:28 |只看作者 |坛友微信交流群
不错,谢谢分享。

使用道具

藤椅
youngvitas 学生认证  发表于 2013-10-5 21:06:33 |只看作者 |坛友微信交流群
谢谢分享 学习快乐

使用道具

板凳
糖糖78 发表于 2013-12-29 21:12:00 |只看作者 |坛友微信交流群
很详细~  多谢了
Offer, come here!

使用道具

报纸
nuomin 发表于 2013-12-30 21:29:39 |只看作者 |坛友微信交流群
好文,简单明了

使用道具

地板
蒲虎fly 发表于 2014-5-19 16:56:06 |只看作者 |坛友微信交流群
一些常用函数,值得学习
爱拼才会赢,笨鸟前飞,勤劳补拙。

使用道具

7
wuya100 发表于 2014-8-25 08:45:46 |只看作者 |坛友微信交流群
谢谢分享!!!!

使用道具

8
daishu308 发表于 2015-3-23 18:22:23 |只看作者 |坛友微信交流群
谢谢

使用道具

9
explorersj 发表于 2015-6-11 01:18:33 |只看作者 |坛友微信交流群
谢谢分享

使用道具

10
chenfop 发表于 2016-4-27 22:00:20 |只看作者 |坛友微信交流群
楼主,我在做线性时遇到问题:Error in pool(fit) : The object must have class 'mira'请问这是怎么回事?该怎么解决?

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-5-1 17:24