R语言快速入门

1.下载与安装

下载:官方网站
安装:双击下一步完成安装。

\color{red}{安装packages:}安装后只有8个基本的模块,一些功能需要安装扩展程序包(简称扩展包)。
R语言扩展包的三种安装方式:

  • 菜单方式:R语言工具栏【Packages】->【Load package】,从已有的程序包中选定一个需要的进行加载;
  • 命令方式:用函数install.packages(),如:在控制台中输入install.packages("lmtest")。
  • 本地安装:在官方网站下载所需要的扩展包,在R语言工具栏中【Packages】->【Install package from local zip files...】

\color{red}{载入packages:}扩展包安装后只能载入内存才能使用,载入内存的方式有以下几种:
1.菜单方式:R语言工具栏【Packages】->【Load package】,从已有的程序包中选定一个需要的进行加载;
2.library()进行加载:如library(lmtest)

2.数据录入

  • 可以以向量,矩阵,列表和数据框等形式输入数据;
  • 一般在其他软件中录入数据,然后将数据读入到R语言中,常用Excel;
    • xlsx转换到csv文件
    • rc=read.csv("xxx.csv")
    • read.csv命令只是将数据以数据框的形式读到R语言,第一行作为变量名
    • 要直接调用变量,使用attach(rc)

3.R语言的运算

运算 符号 说明 例子
四则运算 +,-,*,/,^ 优先级与数学法则相同 6+5*3^2,结果51
赋值运算 <-,=,-> 根据个人喜好而定 x=9
函数运算 functionname() sqrt(16);abs(-6); --
关系运算 <,<=,==,>,>=,!= 结果TRUE或FALSE --
逻辑运算 &,|,! -- --

R语言需要注意的点:

  • 区分大小写
  • 变量名称第一个为字母,应包括字母,数字,下划线和点
  • 代码之间可用“;”分割,或起新行
  • 注释以“#”开头
  • 只认识半角符号,全角不识别

4.R常用数据结构

4.1向量

  • 向量的生成
  • 一般向量的生成:
    x=c(8.2,3.7,4.5,5.6,7.3),
    用c()函数完成向量的合并:c(x,0,1,3)
  • 生成步长为1的向量,
    用“:”符号,如1:5,5:1
  • 生成等差向量:
    seq(from=value1, to=value2, by=value3)
    seq(-2, 2, 0.5)
  • 生成重复向量
    rep(x, times=n)
    x=1:3
    rep(2,3);rep(x,3)

  • 产生空向量
    x<-NULL

  • 向量的运算

+,-,*,/,^对应加,减乘除和乘方运算,是对向量的每一个元素进行相应的运算:
x=c(1,3,5);y=c(2,4,6)
x+y;x-y;x*y;x/y;x^2
内积用x%*%y表示;

  • 向量的元素和子向量的提取

x[i],i为具体数字,从1到N排序;
x[v], v可以是c()生成的向量;
x[-i], i为具体数字,此为去掉第i个元素后的向量;

  • 与向量有关的函数
函数名 功能
length 计算向量的长度
min 向量中最小的元素
max 向量中最大的元素
sum 向量各元素之和
prod 向量各元素的连乘积

例如:

x=c(1,5,7,3)
length(x);min(x);max(x);sum(x);prod(x)
4
1
7
16
105

4.2矩阵

  • 矩阵的生成

有很多方法,这里只介绍matrix()函数,格式如下:
matrix(data=NA,nrow=1,ncol=1,byrow=FALSE,dimnames=NULL)

  • data为向量数据
  • nrow是矩阵行数
  • ncol是矩阵列数
  • byrow=TRUE,生成矩阵按照行放置,FALSE按列放置;
  • dimnames设置矩阵行列名称的参数,缺省时不设置
A=matirx(1:20,nrow=4,ncol=5)
B=matrix(1:20,nrow=4,ncol=5,byrow=T)
A;B

     [,1] [,2] [,3] [,4] [,5]
[1,]    1    5    9   13   17
[2,]    2    6   10   14   18
[3,]    3    7   11   15   19
[4,]    4    8   12   16   20
     [,1] [,2] [,3] [,4] [,5]
[1,]    1    2    3    4    5
[2,]    6    7    8    9   10
[3,]   11   12   13   14   15
[4,]   16   17   18   19   20
  • 矩阵的运算
  • 矩阵的四则运算
A=matrix(1:9,nrow=3,byrow=T)
B=matrix(2:10,nrow=3,byrow=T)
A;B;A+B;A-B;A*B;A/B
     [,1] [,2] [,3]
[1,]    1    2    3
[2,]    4    5    6
[3,]    7    8    9
     [,1] [,2] [,3]
[1,]    2    3    4
[2,]    5    6    7
[3,]    8    9   10
     [,1] [,2] [,3]
[1,]    3    5    7
[2,]    9   11   13
[3,]   15   17   19
     [,1] [,2] [,3]
[1,]   -1   -1   -1
[2,]   -1   -1   -1
[3,]   -1   -1   -1
     [,1] [,2] [,3]
[1,]    2    6   12
[2,]   20   30   42
[3,]   56   72   90
      [,1]      [,2]      [,3]
[1,] 0.500 0.6666667 0.7500000
[2,] 0.800 0.8333333 0.8571429
[3,] 0.875 0.8888889 0.9000000
  • 矩阵的数乘运算和乘法运算
A=matrix(1:12,nrow=3,byrow=T)
B=matrix(12:1,nrow=4,byrow=T)
A;B;2*A;A%*%B

     [,1] [,2] [,3] [,4]
[1,]    1    2    3    4
[2,]    5    6    7    8
[3,]    9   10   11   12
     [,1] [,2] [,3]
[1,]   12   11   10
[2,]    9    8    7
[3,]    6    5    4
[4,]    3    2    1
     [,1] [,2] [,3] [,4]
[1,]    2    4    6    8
[2,]   10   12   14   16
[3,]   18   20   22   24
     [,1] [,2] [,3]
[1,]   60   50   40
[2,]  180  154  128
[3,]  300  258  216
  • 矩阵的元素,行列向量及子矩阵的提取
    A[u,v],u为行数或向量,v为列数或向量,u或v省略时,提取所有的行与列。
    例如:
A=matrix(1:12,nrow=3,byrow=T)
A;A[3,2];A[1,];A[2,];A[1:3,3:4];A[c(1,3),c(3,2)]

     [,1] [,2] [,3] [,4]
[1,]    1    2    3    4
[2,]    5    6    7    8
[3,]    9   10   11   12
[1] 10
[1] 1 2 3 4
     [,1] [,2]
[1,]    3    4
[2,]    7    8
[3,]   11   12
     [,1] [,2]
[1,]    3    2
[2,]   11   10
  • 与矩阵有关的常用函数
函数名 功能
t 求矩阵的转置
det 求方阵的行列式
diag 对象为向量,生成对角矩阵;对象为矩阵,则返回对角线
solve A为方阵,b为向量,solve(A)计算逆,solve(A,b)解线性方程组AX=b
cbind 按列合并A,B矩阵
rbind 按行合并A,B矩阵
apply apply(A,MARGIN,FUN,...),A是矩阵,MARGIN=1对行计算,2为列,FUN是用来计算的函数;
A=matrix(c(1:8,10),nrow=3,byrow=T); 
b=c(2,5,10)
A;t(A);det(A);diag(A);diag(b);solve(A);solve(A,b);apply(A,1,sum)

     [,1] [,2] [,3]
[1,]    1    2    3
[2,]    4    5    6
[3,]    7    8   10
     [,1] [,2] [,3]
[1,]    1    4    7
[2,]    2    5    8
[3,]    3    6   10
[1] -3
[1]  1  5 10
     [,1] [,2] [,3]
[1,]    2    0    0
[2,]    0    5    0
[3,]    0    0   10
           [,1]      [,2] [,3]
[1,] -0.6666667 -1.333333    1
[2,] -0.6666667  3.666667   -2
[3,]  1.0000000 -2.000000    1
[1]  2 -3  2
[1]  6 15 25
  • 存储向量的矩阵
> m<-matrix(list(),2,2)
> m[1,1][[1]]<-1:2
> m[1,2][[1]]<-1:3
> m[2,1][[1]]<-1:4
> m[2,2][[1]]<-1:5
> m[1,2]
[[1]]
[1] 1 2 3

> m[1,2][[1]]
[1] 1 2 3
> m
     [,1]      [,2]
[1,] Integer,2 Integer,3
[2,] Integer,4 Integer,5

4.3列表

列表相当于Python中的哈希数组

  • 列表的定义
list(name="James",height=2.03,no.children=2,child.ages=c(11,8))
$name
[1] "James"

$height
[1] 2.03

$no.children
[1] 2

$child.ages
[1] 11  8
  • 列表的元素与子列表的提取
L=list(name="James",height=2.03,no.children=2,child.ages=c(11,8))
L[[1]];L[[4]];L$height
[1] "James"
[1] 11  8
[1] 2.03
  • 存储向量的列表
> my_list<-list()
> my_list[[1]]<-c(1:5)
> my_list[[2]]<-c(6:11)
> my_list
[[1]]
[1] 1 2 3 4 5

[[2]]
[1]  6  7  8  9 10 11

4.4数据框

数据框是R语言的一种数据结构,通常为矩阵形式,但矩阵各列可以是不同类型;每列是一个变量,每行都是某个具体对象在各个变量上的一组观测值。

  • 数据框的生成
    调用data.frame(),如下:
sjk=data.frame(Name=c("zhang hua","wang li","Du juan"),class=c("t1",'t2','t3'),score=c(80,60,90))
> sjk
       Name class score
1 zhang hua    t1    80
2   wang li    t2    60
3   Du juan    t3    90
  • 数据框的元素与子数据框的提取
    • 采用类似矩阵元素与子矩阵提取方式;
    • 数据框名$元素名
> sjk[2:3,c(1,3)];sjk$score
     Name score
2 wang li    60
3 Du juan    90
[1] 80 60 90
  • 数据框变量的调用和attach()函数
    如果感觉用“数据框$元素名”麻烦,可用attach将元素名直接调入内存;
> attach(sjk);score
[1] 80 60 90

  取消变量的连接可用detach()函数。

  • dataframe删除行列
a<-data.frame(x=c(2,5,9,4,8,7),y=c(3,4,6,4,1,2))
> a
  x y
1 2 3
2 5 4
3 9 6
4 4 4
5 8 1
6 7 2
> a[-1,]
  x y
2 5 4
3 9 6
4 4 4
5 8 1
6 7 2
> a[,-1]
[1] 3 4 6 4 1 2

4.5因子

R语言中一类特殊的对象,主要目的为了表达与说明定性变量的取值。
生成因子最基本的函数是factor(),如:

> sex=c("M","F","M","M","F")
> sexf=factor(sex);
> sexf
[1] M F M M F
Levels: F M

产生一些规律的因子,还经常使用gl()函数,函数格式为:
gl(n,k,length=n*k,labels=1:n,ordered=FALSE)

n:水平数
k:重复次数
length:结果的长度;
labels:是一个n维向量,表示因子水平;
ordered:是逻辑变量,表示是否为有序因子,缺省值为FALSE。

> gl(3,5)
 [1] 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3
Levels: 1 2 3
> gl(3,1,15)
 [1] 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3
Levels: 1 2 3

5 R程序设计

5.1条件语句

  • if else

if(cond) {state}
if(cond1) {state1} else if(cond2) {state2} else {state3}

> if(x>1) {y=x^2+1} else {y=2*x}
> x
[1] 2
> y
[1] 5

5.2循环语句

  • for

for(name in expr_1) {expr_2}
name是循环变量,expr_1是个向量,通常为序列,如1:20等;
expr_2为一组表达式

> A=matrix(0,nrow=3,ncol=3)
> for(i in 1:3) { for(j in 1:3) {A[i,j]=1/(i+j)}};
> A
          [,1]      [,2]      [,3]
[1,] 0.5000000 0.3333333 0.2500000
[2,] 0.3333333 0.2500000 0.2000000
[3,] 0.2500000 0.2000000 0.1666667
  • while

while(cond) {expr}

> year=0;a=10000
> while(a<20000) {a=a*(1+11.25/100); year=year+1};
> year;a
[1] 7
[1] 21091.14

5.3函数

函数定义
name=function(arg1,argt2,...) {expr}

expr为一组R语言表达式

> f=function(x){
+     if(x>1) {
+        y=x^2+1}
+     else {
+        y=2*x}
+ y
+ }
> f(0);f(1);f(2)
[1] 0
[1] 2
[1] 5
  • 和verilog一样,参数按顺序传,如不按顺序,则“name=object"方式传参;
  • 参数可以设置为默认值;

6 R语言绘图

R语言绘图

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容