R語言速成第二課:R的語法結(jié)構(gòu)

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

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

  • 1、數(shù)據(jù)庫介紹篇 1.1什么是數(shù)據(jù)庫 數(shù)據(jù)庫:保存數(shù)據(jù)的倉庫。它體現(xiàn)我們電腦中,就是一個文件系統(tǒng)。然后把數(shù)據(jù)都保存...
    投石機閱讀 894評論 0 0
  • 總體概述 運算符 流程控制 類和對象 泛型 庫的使用 一、運算符 1.1、Dart 所有的運算符描述運算符一元后綴...
    IIronMan閱讀 651評論 2 3
  • 作用域 作用域是你的代碼在運行時,各個變量、函數(shù)和對象的可訪問性。 為什么需要作用域? 最小訪問原則 通過顯示變量...
    竹鼠不要中暑閱讀 153評論 0 0
  • Dart基礎(chǔ)入門語法介紹,詳細說明可以查看相關(guān)視頻《Dart編程語言入門》。 變量與常量 變量 1.使用var聲明...
    Tseng_dc閱讀 885評論 0 0
  • MySQL基礎(chǔ)操作 創(chuàng)建數(shù)據(jù)庫 創(chuàng)建數(shù)據(jù)庫,該命令的作用: 如果數(shù)據(jù)庫不存在則創(chuàng)建,存在則不創(chuàng)建。 創(chuàng)建RUNOO...
    少年_323a閱讀 861評論 0 0

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