R是一門解釋型語言,不許要編譯,可以逐行運行。
1.R的變量定義
R的變量使用前一般不需要聲明,可以直接定義。使用'<-'作為賦值符號
#標量
a <- 12
#空向量
b <- c()
#空matrix
c <- matrix()
#空數(shù)據(jù)框
d <- data.frame()
#空數(shù)組
e <- array()
#空列表
f <- list()
2.包加載及腳本引用
R 包是由社區(qū)開發(fā)(developed by the community)的功能(functions)和數(shù)據(jù)集(data sets)的集合。 它們通過改進現(xiàn)有的基本 R 功能或通過添加新功能來提升 R 的效率。 例如,如果您經(jīng)常使用數(shù)據(jù)框,可能您會聽說 dplyr 或 data.table 這兩個最流行的 R 包。
R腳本是指用R編寫的小程序,里面包含自定義變量及函數(shù)。
通過包的加載和腳本的引用,我們可以獲得基礎(chǔ)R所不具有的功能。
install.packages("ggplot2")
library(ggplot2)
source("myfile.R")
3. 函數(shù)的使用
R函數(shù)的使用格式是: 函數(shù)(參數(shù)1 = 參數(shù)1,參數(shù)2 = 參數(shù)1,參數(shù)3 =參數(shù)1 ....)
R函數(shù)輸出結(jié)果賦值給變量的方法是:變量 <- 函數(shù)(參數(shù))
#通過函數(shù)list列出當前工作目錄的gz文件
dir(pattern= 'gz')
#通過函數(shù)list列出當前工作目錄的gz文件并賦值給gz_file變量
gz_file <- dir(pattern= 'gz')
4. 函數(shù)的定義
我們自己也可以創(chuàng)造函數(shù) sum_num <- function(a,b){a+b}
sum_num <- function(a,b){
c <- a+b
return(c)
}
x <- sum_num(a = 1, b = 2)
x <- sum_num(2, 1)
x <- sum_num(b = 1, a = 2)
5. R的運算符
運算符本質(zhì)上也是函數(shù),只是這個函數(shù)不需要()傳遞參數(shù),而是通過運算符前后的值傳遞參數(shù)。
數(shù)學(xué)運算符:加+,減-,乘,除/,除取余%,指數(shù)^,指數(shù)*
a <- 1 + 1
a <- 3*4
#取余數(shù)
a <- 12%5
#指數(shù)
a <- 12^2
a <- 12**2
比較運算符:>, <,==, >=, <=, !=
比較運算符是函數(shù),可以輸出兩種結(jié)果,都是邏輯值:TRUE或者FALSE
1 < 2 #結(jié)果FALSE
1 == 2 #判斷相等,結(jié)果FALSE
1 != 2 #判斷不相等,結(jié)果為TRUE
邏輯運算符: &, |
邏輯運算符的輸入是邏輯值,對于&,前后參數(shù)需要都為TURE,才輸出TRUE,對于“|”則前后參數(shù)只要有一個為TURE,就輸出TRUE
TRUE & FALSE #結(jié)果FALSE
TRUE | FALSE #結(jié)果TURE
1 < 2 & 2 == 2 #結(jié)果為TRUE
5. 循環(huán)結(jié)構(gòu)
R的循環(huán)類型 for, while
for的格式:for (variable in vector) {expr},注意對應(yīng)一下格式與實例中的關(guān)系
for在每個循環(huán)中從讓variable(變量)在vector(向量)中取值,然后variable參與大括號{}中的命令,這個過程稱為“循環(huán)遍歷”。
k <- 0
#從1-100循環(huán)遍歷
for (i in c(1:100)) {
k <- k+i
print(k)
}
#從a, b, c這樣的字符串向量循環(huán)遍歷
for (name in c("a","b","c")) {
print(name)
}
while的格式:while (condition) {}
while在每個循環(huán)中會判斷()內(nèi)的語句輸出是否為TRUE,如果為TRUE就繼續(xù)執(zhí)行。大括號{}中的命令,直到()內(nèi)的語句為FALSE。
#死循環(huán),別執(zhí)行,如果執(zhí)行了,用stop終止
while (TRUE) {
print(“TRUE”)
}
#如果i大于0就一直執(zhí)行
i <- 10
while (i > 0) {
i <- i -1
print(i)
}
5. 分支結(jié)構(gòu)
R的分支類型 if, else, switch
if的格式:if(condition){}
if是指如果if后的condition為真,則執(zhí)行大括號內(nèi)的程序,如果如假,則跳過后面的程序。
if(TRUE){print"I am TRUE"}
if(1 <2){print"1 < 2 is TRUE"}
if,else
格式
if(condition1){expr}else(condition2){expr}
if(condition1) {expr} else if(condition2){expr} else(condition2){expr}
通過多個條件判斷的分支結(jié)構(gòu)
if(FALSE){
print ("I am if")
}else(FALSE){
print ("I am else")
}
#分數(shù)判斷
socre = 60
if(score >= 90){
print ("excellent")
}else if(score >=60 & score<90){
print ("good")
}else{
print("bad")
}
switch
switch是為了解決復(fù)雜分支結(jié)構(gòu),比如條件有十種,使用if,else編寫會比較麻煩。
switch格式
switch(expr,
case1 = "case1",
case2 = "case2"
case3 = "case3"
...)
switch里的expr是為了得到case的值,之后通過case的值來輸出結(jié)果
x <- 3
switch(x,"first","second","third","fourth")
#[1] "third"
input <-"LDHA"
switch(input, LDHA="LDHA", SNAP23 = "SNAP23", CD274 = "CD274", PDCD1="PDCD1")
#[1] "LDHA"