系统自学R的第二天#参考书籍《R语言编程艺术》
*** 函数入门***
R语言编程的核心是编写“函数”,函数就是一组指令的集合,用来读取输入、执行计算、返回结果。
- oddcount()------计算整数向量中奇数的个数。
- 以下就是一个例子
- `#count the number of odd integers in x
> oddcount<-function(x) {
+ k<-0 #assign 0 to k
+ for (n in x) {
+ if(n %% 2==1) k<-k+1 #%% is the modulo operator
+ }
+ return(k)
+ }
>oddcount(c(1,3,5))
[1] 3
+代表现在还在定义函数。即加号是续行符,不是新输入的提示符。
在R中取余数的运算符是%%,
例如:
> 38%%7 [1] 3
要理解什么是形式参数,什么是实际参数
变量的作用域
只有在函数体内部可见的变量对这个函数来说是“局部变量”,在oddcount()中,k和n都是局部变量。它们在函数返回值以后就被撤销了
以下是一个例子:
> oddcount(c(1,3,5,9))
[1] 4
> n
Error: object 'n' not found
值得注意的是,R函数中的形式参数是局部变量。
全局变量是在函数之外创建的变量,在函数内部也可以访问
以下是一个例子
> f<-function(x)return(x+y)
> y<-3
> f(5)
[1] 8
``
这里的y就是**全局变量**
可以用R的“超赋值运算符”<<-在函数内部给全局变量赋值,将在后面学习。
***默认参数***
R语言也经常用到“默认参数”。考虑下面这样的函数定义:
```r
>g<-function(x,y=2,z=T)
如何没有在函数调用时给y设定一个值,则将y初始为2。同理,z也有默认值TRUE。下面考虑下面的调用:
>g(12,z=FALSE)
这里,数值12是x的实际参数,我们接受了y的默认值2,不过覆盖了z的默认值,将其设定为FALSE,(这里不理解,什么叫 覆盖)