統計學導論這門課還有一個非常重要的部分就是R語言實驗,這個部分也是我要選擇這門課的原因之一。下面這幾節就介紹R語言,以及其一些基礎的應用。
- 實驗1
- R語言基礎
- R studio快捷鍵的使用
- 變量類型
- 資料結構
R語言基礎
1.R中可以把函數計算的結果指派給變量
x <- 5 # 表示将變量x指派為5
注:R中<-為指派符号,R中也允許用=指派,但是可能會出問題是以不推薦使用
2.R中變量名稱可以包含任何大寫字母,小寫字母(是以R中
區分大小寫),和數字0至9(數字不能用于名稱的開頭),所有符号的輸入要在
英文的狀态注:變量名稱不能與R中自帶的變量、函數名重複。如pi在R中代表圓周率。
3.#該符号表示注釋符
4.清除單個變量使用rm();清除記憶體中所有變量rm(list=Is(all=TRUE));清屏Ctrl+l
5.R中定義了一些函數例如sin,cos,exp,sort等
help("sort")
?sort
#檢視函數sort的幫助文檔
# 如何看幫助文檔
# Description,是告訴你函數是用來做什麼的。
# Usage,用法
# Arguments, 參數,即輸入
# Value,傳回值,即輸出
# Examples,例子
# Details, 補充說明,經常是一些注意事項
R studio快捷鍵的使用
- 變成注釋 Ctrl+shift+C
- 運作目前行 Ctrl+Enter
- <- Alt+”-”
- 移動滑鼠到控制台 Ctrl+2
- 移動滑鼠至檔案編輯區 Ctrl+1
- 控制台清屏 Ctrl+L
- 曆史記錄翻滾 Up/Down
- 終止目前指令 Esc
變量類型
可以用class()或者 mode()函數
檢視變量類型- 邏輯型 “logical”,(TRUE/FALSE,或者T/F)(T/F要大寫)
- 數值型 “numeric”,代表一個實數
- 字元型 “character”,代表一個字元串
a <- seq(1,10, by = 0.2)
b <- c('my','god!')
c <- c(T,F,T,T,F)
class(a) # 數值型
class(b) # 字元型
class(c) # 邏輯型
在數值計算時,邏輯型的T和F會對應轉換為1和0
TRUE+TRUE
布爾運算:并(&)、或(|)、非(!)
b <- T&T
b #布爾運算:并
c <- T|F
c #布爾運算:或
d <- !T
d #布爾運算:非
想要
确定變量類型時,可用is.XX形式的函數
- 檢查是否為邏輯型變量,用函數:is.logical()
- 檢查是否為數值型變量,用函數:is.numeric()
- 檢查是否為字元型變量,用函數:is.character()
當想要
更改變量的資料類型時,可以用as.XX形式的函數
- 将變量更改為邏輯型變量,用函數:as.logical()
- 将變量更改為數值型變量,用函數:as.numeric()
- 将變量更改為字元型變量,用函數:as.character()
資料結構
向量向量:用于存儲數值型、字元型或邏輯型資料的一維數組。
标量:隻含一個元素的向量。如:x<-3
- 向量的建立
1.1 建立方法一:組合功能函數c()
a <- c(1,2,4) #數值型向量
>b <- c("one","two","apple")#字元型向量
#注意:不要在編碼時使用c作為變量名
#c <- c(TRUE,TRUE,FALSE,TRUE,FALSE)這是錯誤的
>d <- c(TRUE,TRUE,FALSE,TRUE,FALSE) #邏輯型向量
注:單個向量中的資料必須擁有相同的資料類型。是以,當輸入包含不同資料類型時,會統一成“低級别”的資料類型。
例如有以下的輸出結果:
c("zhang",3,2,TRUE)
[1] "zhang" "3" "2" "TRUE"
c(3,2,TRUE,FALSE)
[1] 3 2 1 0
1.2 建立方法二:使用冒号生成數值序列
a:b #從a開始,逐項加1或者減1,直到b為止
例如有如下輸出結果:
1:6
[1] 1 2 3 4 5 6
4:7.6
[1] 4 5 6 7
1.2:5
[1] 1.2 2.2 3.2 4.2
此外還有幾種等價形式
a <- 2:6 #将向量2,3,4,5,6指派給a
a <- c(2:6)
a <- c(2,3,4,5,6)
1.3 建立方法三:建立等差數列Seq()函數
Seq(from=value1,to=value2,by=value3,length.out=value4)
#首項value1,尾項最接近value2,中間間隔(步長)為value3,向量長度為value4。預設by=1(步長為1)。
m<-seq(2,10) #等效于 m<-2:10
seq(0, 1, by=0.1)
1.4 建立方法四:rep()重複函數
rep(x,times) #将向量x重複times次
rep(x,times,each=n) #先将x的每個元素重複n次,再将得到的向量整體重複times次
例如有如下輸出結果:
x<-c(1,3,5)
s0<-rep(x,times=3); s0 #将向量x重複3次,輸出s
[1] 1 3 5 1 3 5 1 3 5
s1<-rep(x,each=3); s1 #将向量x中的每個元素重複3次
[1] 1 1 1 3 3 3 5 5 5
2.通路向量中的元素:在方括号[ ]中給定元素所處的位置
a <- c(1,24,56,93,88,97)
a[3] #輸出向量a的第3個元素
[1] 56
a[c(1,3,5,6)] #輸出向量a的第1,3,5,6個元素
[1] 1 56 88 97
a[2:4] #輸出向量a的2:4個元素
[1] 24 56 93
a[-4] #輸出向量a除第4個元素以外的其他元素
[1] 1 24 56 88 97
3.修改向量中的元素:指派
(R中向量是連續存儲的,向量大小在建立時就已經确定了,是以不能插入或删除元素。但是向量可以擴充,是以可用重新指派的方法插入或删除向量元素)
a <- c(1,24,56,93,88,97)
a[4]<-3
a #将向量a的第四個值修改為3
[1] 1 24 56 3 88 97
a<-c(a[1:3],12,a[4:6])
a #在第4個元素位置插入12
[1] 1 24 56 12 93 88 97
a<-a[1:3]
a
[1] 1 24 56
x<-1:3
x[7]<-4
x #對原有三個元素的x向量進行擴充自動填充個數,沒有指派的部分填充為NA
[1] 1 2 3 NA NA NA 4
矩陣矩陣:二維數組
向量:特殊的矩陣(行數為1,或者列數為1的矩陣)
注:每個元素必須是相同的資料類型(模式)(數值型、字元型或邏輯型
1.建立矩陣
mymatrix <- matrix(vector, nrow=number_of_rows, ncol= number_of_columns, byrow=logical_value,
dimnames=list(char_vector_rownames, char_vector_colnames))
參數說明:
- Vector 向量:矩陣的元素
- nrow=number_of_rows 矩陣的行數
- ncol= number_of_columns 矩陣的列數
- byrow=logical_value 按行/按列填充(預設FALSE,按列填充)
- char_vector_rownames 字元型的行名
- char_vector_colnames 字元型的列名
2.通路矩陣中的元素
在方括号中,通過下标,給定元素所處的位置
- X[i,j] 第i行第j列的元素
- X[i,] 第i行的元素
- x[,j] 第j列的元素
選擇多行或者多列時,i,j可以數值型的向量
x <- matrix(1:10,nrow=2)###預設按列填充
x
x[2,3] #輸出矩陣x第二行第三列的元素
x[2,] #輸出矩陣x第二行的元素
x[,2] #輸出矩陣x第二列的元素
a<-c(1,2)
b<-c(2,3)
x[a,b] #提取的位置也可以以矩陣形式提取
3.修改矩陣中的元素
x<-matrix(1:6,2,3) #生成2*3的矩陣
one<-c(1,1,1)
two<-c(1,1)
rbind(x,one) #增加行
cbind(x,two) #增加列
輸出的結果分别為

輸出結果1
輸出結果2
x<-1:5
y<-c('1','2','3')
z<-rbind(x,y) #行方向合并一定要保證列數相同
y<-c('1','2','3','4','5')
z<-rbind(x,y)
class(z) #數組中要求各維元素為相同變量類型,否則強行統一為“低級别”類型
數組 1.建立數組
myarray <- array(vector,dimensions,dimnames)
參數說明:
Vector 向量:數組中的元素
dimensions:數值型向量,給出各次元下标的最大值;
dimnames:可選的、各次元名稱标簽清單。
dim1<-c('A1','A2')
dim2<-c('B1','B2','B3')
dim3<-c('C1','C2','C3','C4') #生成各維變量名向量
z<array(1:24,c(2,3,4),dimnames=list(dim1,dim2,dim3))
z
2.通路數組
z[1:2,2:3,2:4] #通路A1,A2,B2,B3,C2,C3,C4交叉位置的所有元素
z[,,4] #通路C4位置處的所有元素,未設定第1,2維位置,即預設第1, 2維所有位置皆通路。
3.修改數組
數組的修改方式與前面介紹的向量和矩陣的修改方式相同。向量和矩陣都是廣義的數組。