作者: afenxi来源: afenxi时间:2017-05-14 13:38:43
正如前面内容所暗示的一样,R 语言允许用户 创建自己的函数(function)对象。R 有一些 内部函数并且可以用在 其他的表达式中。通过这个过程,R 在程序的功能性, 便利性和优美性上得到了扩展。学写这些有用的函数 是一个人轻松地创造性地使用 R 的 最主要的方式。
需要强调的是,大多是函数都作为 R 系统的一部分提供,如mean(), var(), postscript() 等等。这些函数都是用 R 写的, 因此在本质上和用户写的没有差别。
一个函数是通过下面的语句形式定义的。
> name <- function(arg_1, arg_2, ...) expression
其中 expression 是一个 R 表达式(常常是一个成组 表达式),它利用参数 arg_i 计算最终的结果。 该表达式的值就是返回给函数的最终值。
可以在任何地方以 name(expr_1, expr_2, ...) 的形式调用函数。
Simple examples: 简单的例子
这是一个简单的例子,它用来计算双样本的 t-统计量,并且显示“所有步骤”。这是一个人为的例子, 当然还有其他更简单的办法 得到一样的结果。
函数定义如下:
> twosam <- function(y1, y2)
Object orientation: 面向对象
一个对象的类决定了它会如何被一个 泛型函数处理。相反,一个泛型函数 通过参数类的特异参数来完成特定工作或者事务的。 如果参数缺乏任何类属性, 或者在该问题中有一个不能被任何泛型函数处理的类, 泛型函数会有一种默认的处理方式。
下面的一个例子使这个问题清晰。类机制为用户提供了为特定问题设计和编写 泛型函数的便利。 在其他泛型函数中,plot() 用于图形化显示 对象,summary() 用于各种类型的概述分析, 以及 anova() 用于比较 统计模型。
能以特定方式处理类的泛型函数的数目非常的庞大。 例如,可以在非常时髦的类对象 "data.frame" 中使用的函数有
[ [[<- any as.matrix [<- mean plot summary
可以用函数 methods() 得到当前对某个类对象 可用的泛型函数列表:
> methods(class="data.frame")
相反,一个泛型函数可以处理的类同样很多。 例如,plot() 有默认的方法和变量 处理对象类 "data.frame", "density","factor",等等。一个完整的列表同样可以通过 函数 methods() 得到:
> methods(plot)
读者可以参考 完整描述这一机制的正式文档。
原创文章,作者:古思特,如若转载,请注明出处:《用R语言进行数据分析:编写函数》http://www.afenxi.com/post/3407