当前位置:天才代写 > tutorial > 其他教程 > R语言编程入门之工具和类

R语言编程入门之工具和类

2017-12-04 08:00 星期一 所属: 其他教程 浏览:455

R是一种基于工具(Object)的语言,所以你在R语言中打仗到的每样对象都是一个工具,一串数值向量是一个工具,一个函数是一个工具,一个图形也是一个工具。基于工具的编程(OOP)就是在界说类的基本上,建设与操纵工具。

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

我们下面来用一个简朴线性回归的例子来相识一下工具和类的处理惩罚。

# 建设两个数值向量
x <- runif(100)
y <- rnorm(100)+5*x
# 用线性回归建设模子,存入工具model
model <- 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(),它能以简捷的方法显示工具的数据布局及其内容,试试看,很是有用的。
 

    关键字:

天才代写-代写联系方式