R語言快速入門

1.下載與安裝

下載:官方網(wǎng)站
安裝:雙擊下一步完成安裝。

\color{red}{安裝packages:}安裝后只有8個(gè)基本的模塊,一些功能需要安裝擴(kuò)展程序包(簡(jiǎn)稱擴(kuò)展包)。
R語言擴(kuò)展包的三種安裝方式:

  • 菜單方式:R語言工具欄【Packages】->【Load package】,從已有的程序包中選定一個(gè)需要的進(jìn)行加載;
  • 命令方式:用函數(shù)install.packages(),如:在控制臺(tái)中輸入install.packages("lmtest")。
  • 本地安裝:在官方網(wǎng)站下載所需要的擴(kuò)展包,在R語言工具欄中【Packages】->【Install package from local zip files...】

\color{red}{載入packages:}擴(kuò)展包安裝后只能載入內(nèi)存才能使用,載入內(nèi)存的方式有以下幾種:
1.菜單方式:R語言工具欄【Packages】->【Load package】,從已有的程序包中選定一個(gè)需要的進(jìn)行加載;
2.library()進(jìn)行加載:如library(lmtest)

2.數(shù)據(jù)錄入

  • 可以以向量,矩陣,列表和數(shù)據(jù)框等形式輸入數(shù)據(jù);
  • 一般在其他軟件中錄入數(shù)據(jù),然后將數(shù)據(jù)讀入到R語言中,常用Excel;
    • xlsx轉(zhuǎn)換到csv文件
    • rc=read.csv("xxx.csv")
    • read.csv命令只是將數(shù)據(jù)以數(shù)據(jù)框的形式讀到R語言,第一行作為變量名
    • 要直接調(diào)用變量,使用attach(rc)

3.R語言的運(yùn)算

運(yùn)算 符號(hào) 說明 例子
四則運(yùn)算 +,-,*,/,^ 優(yōu)先級(jí)與數(shù)學(xué)法則相同 6+5*3^2,結(jié)果51
賦值運(yùn)算 <-,=,-> 根據(jù)個(gè)人喜好而定 x=9
函數(shù)運(yùn)算 functionname() sqrt(16);abs(-6); --
關(guān)系運(yùn)算 <,<=,==,>,>=,!= 結(jié)果TRUE或FALSE --
邏輯運(yùn)算 &,|,! -- --

R語言需要注意的點(diǎn):

  • 區(qū)分大小寫
  • 變量名稱第一個(gè)為字母,應(yīng)包括字母,數(shù)字,下劃線和點(diǎn)
  • 代碼之間可用“;”分割,或起新行
  • 注釋以“#”開頭
  • 只認(rèn)識(shí)半角符號(hào),全角不識(shí)別

4.R常用數(shù)據(jù)結(jié)構(gòu)

4.1向量

  • 向量的生成
  • 一般向量的生成:
    x=c(8.2,3.7,4.5,5.6,7.3),
    用c()函數(shù)完成向量的合并:c(x,0,1,3)
  • 生成步長(zhǎng)為1的向量,
    用“:”符號(hào),如1:5,5:1
  • 生成等差向量:
    seq(from=value1, to=value2, by=value3)
    seq(-2, 2, 0.5)
  • 生成重復(fù)向量
    rep(x, times=n)
    x=1:3
    rep(2,3);rep(x,3)

  • 產(chǎn)生空向量
    x<-NULL

  • 向量的運(yùn)算

+,-,*,/,^對(duì)應(yīng)加,減乘除和乘方運(yùn)算,是對(duì)向量的每一個(gè)元素進(jìn)行相應(yīng)的運(yùn)算:
x=c(1,3,5);y=c(2,4,6)
x+y;x-y;x*y;x/y;x^2
內(nèi)積用x%*%y表示;

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

x[i],i為具體數(shù)字,從1到N排序;
x[v], v可以是c()生成的向量;
x[-i], i為具體數(shù)字,此為去掉第i個(gè)元素后的向量;

  • 與向量有關(guān)的函數(shù)
函數(shù)名 功能
length 計(jì)算向量的長(zhǎng)度
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()函數(shù),格式如下:
matrix(data=NA,nrow=1,ncol=1,byrow=FALSE,dimnames=NULL)

  • data為向量數(shù)據(jù)
  • nrow是矩陣行數(shù)
  • ncol是矩陣列數(shù)
  • byrow=TRUE,生成矩陣按照行放置,F(xiàn)ALSE按列放置;
  • dimnames設(shè)置矩陣行列名稱的參數(shù),缺省時(shí)不設(shè)置
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
  • 矩陣的運(yùn)算
  • 矩陣的四則運(yùn)算
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
  • 矩陣的數(shù)乘運(yùn)算和乘法運(yùn)算
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為行數(shù)或向量,v為列數(shù)或向量,u或v省略時(shí),提取所有的行與列。
    例如:
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
  • 與矩陣有關(guān)的常用函數(shù)
函數(shù)名 功能
t 求矩陣的轉(zhuǎn)置
det 求方陣的行列式
diag 對(duì)象為向量,生成對(duì)角矩陣;對(duì)象為矩陣,則返回對(duì)角線
solve A為方陣,b為向量,solve(A)計(jì)算逆,solve(A,b)解線性方程組AX=b
cbind 按列合并A,B矩陣
rbind 按行合并A,B矩陣
apply apply(A,MARGIN,FUN,...),A是矩陣,MARGIN=1對(duì)行計(jì)算,2為列,F(xiàn)UN是用來計(jì)算的函數(shù);
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
  • 存儲(chǔ)向量的矩陣
> 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列表

列表相當(dāng)于Python中的哈希數(shù)組

  • 列表的定義
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
  • 存儲(chǔ)向量的列表
> 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數(shù)據(jù)框

數(shù)據(jù)框是R語言的一種數(shù)據(jù)結(jié)構(gòu),通常為矩陣形式,但矩陣各列可以是不同類型;每列是一個(gè)變量,每行都是某個(gè)具體對(duì)象在各個(gè)變量上的一組觀測(cè)值。

  • 數(shù)據(jù)框的生成
    調(diào)用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
  • 數(shù)據(jù)框的元素與子數(shù)據(jù)框的提取
    • 采用類似矩陣元素與子矩陣提取方式;
    • 數(shù)據(jù)框名$元素名
> sjk[2:3,c(1,3)];sjk$score
     Name score
2 wang li    60
3 Du juan    90
[1] 80 60 90
  • 數(shù)據(jù)框變量的調(diào)用和attach()函數(shù)
    如果感覺用“數(shù)據(jù)框$元素名”麻煩,可用attach將元素名直接調(diào)入內(nèi)存;
> attach(sjk);score
[1] 80 60 90

? 取消變量的連接可用detach()函數(shù)。

  • 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語言中一類特殊的對(duì)象,主要目的為了表達(dá)與說明定性變量的取值。
生成因子最基本的函數(shù)是factor(),如:

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

產(chǎn)生一些規(guī)律的因子,還經(jīng)常使用gl()函數(shù),函數(shù)格式為:
gl(n,k,length=n*k,labels=1:n,ordered=FALSE)

n:水平數(shù)
k:重復(fù)次數(shù)
length:結(jié)果的長(zhǎng)度;
labels:是一個(gè)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程序設(shè)計(jì)

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循環(huán)語句

  • for

for(name in expr_1) {expr_2}
name是循環(huán)變量,expr_1是個(gè)向量,通常為序列,如1:20等;
expr_2為一組表達(dá)式

> 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函數(shù)

函數(shù)定義
name=function(arg1,argt2,...) {expr}

expr為一組R語言表達(dá)式

> 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一樣,參數(shù)按順序傳,如不按順序,則“name=object"方式傳參;
  • 參數(shù)可以設(shè)置為默認(rèn)值;

6 R語言繪圖

R語言繪圖

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容