R语言编程语法
一、基本的概念
语句(statement):一条单独的R语句或一组复合语句(包含在{}中的一组R语句,使用分号分割);
条件(cond):一条最终被解析为真或者假的表达式;
表达式(expr):一条数据或字符串的求职语句;
序列(seq):一个数值或字符串的求值语句。
二、R语言之控制结构
2.1 循环结构
2.1.1 for结构
语法: for (var in seq){statement1;satement2;...}
说明:直到变量值不再包含在序列中为止
1 > n<-0 2 > for (i in seq(1:7)){ 3 + n = n+y[i]*f[i] 4 + print(n) 5 + } 6 #输出 7 [1] 0 8 [1] 34 9 [1] 82 10 [1] 130 11 [1] 142 12 [1] 147 13 [1] 159
2.1.2 while结构
语法:
i <- seq #(初始化值)
while(cond(i)){statement1;statement2;...}
1 > i <- 10 2 > while(i>0){ 3 + i = i - 1 4 + print(i) 5 + } 6 #输出 7 [1] 9 8 [1] 8 9 [1] 7 10 [1] 6 11 [1] 5 12 [1] 4 13 [1] 3 14 [1] 2 15 [1] 1 16 [1] 0
2.2 条件语句
2.2.1 if-else结构
语法:
if (cond){statement1;statement2;...}
if (cond){statement1;statement2;...}else{statement3;statement4;...}
说明:
如果cond为真,则执行第一个{}中的语句,否则执行else之后{}中的语句(如果else存在的情况下)。
1 > a<-10;b<-9;c<-8 2 > if(a<b){ 3 + print('hello') 4 + }else{ 5 + print('R') 6 + } 7 #输出 8 [1] "R"
2.2.2 ifelse结构
语法:
ifelse(cond, statement1, statement2)
说明:
如果cond为真,则执行statement1,否则执行statement2
1 > ifelse(b>c, print('hello'),print('R')) 2 #输出 3 [1] "hello"
三、函数
语法:变量名 = function(变量列表){函数体}
myfunction <- function(arg1, arg2, ...){
statements
return(object)
}
说明:
1. function(){}创建函数;
2. 函数的调用方式,在变量名后面加上小括号'()',如myfunction(arg1, arg2, ...);
3. 函数的调用与其参数的位置和名字有关,可以按位置调用,按名字调用,也可设置默认参数;
4. 函数是一个‘闭包’,只在函数参数和函数体中定义的变量,且在定义函数之前未定义过该变量时,这些变量都是专属于该函数的局部变量。当函数运行结束后,这些变量也自动消失,不能在后续的分析中调用,也不会引起命名冲突。我们可是使用超赋值符号“ <<-”,将局部变量改变为全局变量,供后续分析。
5. 延伸:在R语言中,{statement1;statement2; ...}定义了一个闭包,在该闭包中的变量都是一种局部变量,一旦执行结束,这些变量也将消失。如果要在后续分析中继续使用,则使用超值赋值符号。同时,这些变量名也不会引起命名冲突。