函数

用户可自行添加函数。函数可以看做一段代码的包装体,它可以接受一些数据输入,我们称为输入参数,这些数据在函数体内自行运算,完毕后可以返回规定的计算结果。这样用户只用关心功能,待处理的数据,以及接受最终的结果,不用了解内部复杂的细节。 在编写函数的时候,中间使用的变量名,尽量要表达它的意义。

控制流

对于有确定输入和输出的计算问题,是可以被计算机解决的。 简化成可以用三种控制结构编写相应的算法就可以解决以上的问题。
R拥有一般现代编程语言中都有的标准控制结构。

(1)顺序 在正常情况下,R程序中的语句是从上至下顺序执行的。

(2)分支 分支,是一种根据某种条件真假来决定执行哪些后续语句的结构。 经常用的结构有三种 单独的if(cond) statement 双向的if(cond) statement1 else statement2 嵌套的,上面statement中又包括if else 型。

(3)循环 循环结构重复地执行一个或一系列语句,直到某个条件不为真为止。 这个条件可以是根据循环的次数决定; 或者根据某些条件来决定。

数据的标准化

基本的数据文件存储与加载
write.table()去将数据框保存到文本文件。 使用import dataset以可视化的方法读取文本文件中的数据,它可以用read.table等效完成。

理解标准化

对于数值范围不一样的数,要进行直接比较,需要进行标准化。R中标准化的函数是scale(),更一般化的是scale()*SD+N。

分位点的理解

在R中,用quantile()去求一组数的分位点。可以知道每一个数在这个数组背景中的位序。

data<-read.table("data.txt",header = T,sep = "\t",stringsAsFactors = F)
z<-data[,c(2:4)]
z.1<-scale(z)
score<-apply(z.1,1,mean)
data<-cbind(data,score)
z.2<-quantile(score,c(.8,.6,.4,.2))
data$grade[data$score>=z.2[1]]="A"
data$grade[data$score<z.2[1] & data$score>=z.2[2]]="B"
data$grade[data$score<z.2[2] & data$score>=z.2[3]]="C"
data$grade[data$score<z.2[3] & data$score>=z.2[4]]="D"
data$grade[data$score<z.2[4]]="F"
z.3=strsplit(data$Student," ")
data$FirstName=sapply(z.3,"[",1)
data$LastName=sapply(z.3,"[",2)
data<-data[,c(7,8,2:6)]
data[order(data$FirstName,data$LastName),]

FirstName LastName Math Science English score grade

2 Angela Williams 600 99 22 0.9238259 A

3 Bullwinkle Moose 412 80 18 -0.8565414 D

6 Cheryl Cushing 512 85 28 0.3532485 C

4 David Jones 358 82 15 -1.1620473 F

8 Greg Knox 625 95 30 1.3378934 A

5 Janice Markhammer 495 75 20 -0.6289776 D

9 Joel England 573 89 27 0.6978361 B

1 John Davis 502 95 25 0.5592028 B

10 Mary Rayburn 522 86 18 -0.1768163 C

7 Reuven Ytzrhak 410 80 15 -1.0476242 F

综合了标准化,分段,字符串处理,以及数据框的重编码。