实验目的
熟悉并掌握R语言中函数的定义及编写
实验原理
在实现复杂算法时,编写函数可以重复使用,修改也很容易。常用的函数控制命令以及语法是:function(参数) 语句。
实验步骤
创建一个简单的函数并调用
> f1 <- function(x){x^2+sin(x)}
> f1(10)
[1] 99.45598
> f1(1:9)
[1] 1.841471 4.909297 9.141120 15.243198 24.041076 35.720585 49.656987 64.989358 81.412118
将x=10代入,返回结果99.45598,如果将向量1:9带入,则返回一组数。
如果函数中包含多条语句,则函数的返回值是计算的最后结果,同样也可以使用return函数确定返回函数值,如下例:
> f2 <- function(x,y){x^2;x+y;x^2+y}
> f2(2,2)
[1] 6
> f3 <- function(x,y){return(x^2);x+y;x^2+y}
> f3(3,3)
[1] 9
如下例的函数可以返回n以内的质数:
> primes <- function(n){
+ p <- 2:n
+ i <- 1
+ while (p[i] <= sqrt(n)) {
+ p <-p[p %% p[i] != 0 | p==p[i]]
+ i <- i+1
+ }
+ p
+ }
> primes(100)
[1] 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97
如下面的代码自定义统计函数:
> stat <- function(x,npar=TRUE,print=TRUE) {
+ if (!npar) {
+ center <- mean(x); spread <- sd(x)
+ } else {
+ center <- median(x); spread <- mad(x)
+ }
+ if (print & !npar) {
+ cat("Mean=", center, "\n", "SD=", spread, "\n")
+ } else if (print & npar) {
+ cat("Median=", center, "\n", "MAD=", spread, "\n")
+ }
+ result <- list(center=center,spread=spread)
+ return(result)
+ }
> x<-rnorm(10,0,1)
> stat(x)
Median= -0.1500069
MAD= 0.4998093
$center
[1] -0.1500069
$spread
[1] 0.4998093