R(10):第二章:2.9编写自己的函数

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/genome_denovo/article/details/82391179

《统计建模与R软件》薛毅

第2章 R软件的使用

2.9 编写自己的函数

函数定义的格式如下:
> name <- function(arg_1, arg_2, ...) expression
expression是R语言中的表达式(通常是一组表达式),arg_1, arg_2, … 表示函数的参数;表达式中,放在程序最后的信息是函数的返回值,返回值可以是向量、数组(矩阵)、列表或数据框。
调用函数的格式为name(arg_1, arg_2, …),并且在任何时候调用都是合法的
在调用自己编写的函数(程序)时,需要将已经写好的函数调用到内存中,或执行source()函数。

2.9.1 简单的例子

例如:编写一个用二分法求非线形方程根的函数,并求方程
x^3 - x - 1 = 0
求解,去初始区间[a, b],当f(a)与f(b)异号,作二分法计算;否则停止计算(输出计算失败信息)。
二分法计算过程为:取中点x=(a+b)/2,若f(a)与f(b)异号,则置b=x;否则a=x,当区间长度小于指定要求时,停止计算。
编写二分法程序,其名称为bisect.R
> fzero <- function(f, a, b, eps=1e-5){

····if (f(a)*f(b)>0)

········list(fail="finding root is fail!")

····else{
·······
repeat {

···········if (abs(b-a)<eps) break

···············x <- (a+b)/2

···············if (f(a)*f(x)<0) b<-x else a<-x

···········}
···········list(root=(a+b)/2, fun=f(x))

····}

}

猜你喜欢

转载自blog.csdn.net/genome_denovo/article/details/82391179
今日推荐