R語(yǔ)言 學(xué)習(xí)筆記(一)

寫(xiě)在前面:寫(xiě)的比較簡(jiǎn)單,把基本知識(shí)點(diǎn)捋了一遍,主要是用來(lái)給自己理清思路和復(fù)習(xí)用的,適合有一定編程基礎(chǔ)的初學(xué)者來(lái)看。


R語(yǔ)言 基本語(yǔ)法

1. “Hello World!”

myString <- "Hello, World!"
print ( myString)

2. 怎么打注釋?

# This is how to quote.

R語(yǔ)言 數(shù)據(jù)類型

數(shù)據(jù)類型 元素 維度
向量 Vector 同類型元素 一維
列表 List 不同類型元素 一維
矩陣 Matrix 同類型元素 二維
數(shù)組 Array 同類型元素 多維
因子 Factor 向量和向量不同值的標(biāo)簽 一維
數(shù)據(jù)幀 Data Frame 不同類型相同長(zhǎng)度的向量 二維

1. 都有什么常用的數(shù)據(jù)類型?
邏輯型: TRUE, FALSE
數(shù)字:22.5, 5
整型:25L, 0L
復(fù)合型: 3+2i
字符型:'a', "Hello", '25.4'
原型:舉個(gè)例子

v<-charToRaw("Hello!")
print(v)

輸出結(jié)果:

[1] 48 65 6c 6c 6f 21

2. 向量Vector怎么用?

Vector由多個(gè)同類型的元素組成。

animal <- c('cat', 'dog', 'rabbit')

3. 列表List怎么用?
List可以由多個(gè)不同類型的元素組成。

list_ <- list(c(2,3,4),22,sin)

4. 矩陣Matrix怎么用?
Matrix是一個(gè)二位數(shù)據(jù)集。nrow代表行(橫著有幾行),ncol代表列(每行有幾個(gè))。
byrow true的時(shí)候按行填充(如下),否則按列填充。

M = matrix( c('a','a','b','c','b','a'), nrow = 2, ncol = 3, byrow = TRUE)

輸出結(jié)果:

     [,1] [,2] [,3]
[1,] "a"  "a"  "b" 
[2,] "c"  "b"  "a" 

5. 數(shù)組Array怎么用?
Array是可以有多個(gè)維度的矩陣。Matrix可以視為一個(gè)二維的Array。
創(chuàng)建Array的方式:

a <- array(c('green','yellow'),dim = c(2,2,2))
a<-c('green', 'yellow', 'green', 'yellow', 'green', 'yellow', 'green', 'yellow')
dim(a)<-c(2,2,2)
#或者a<-array(a, dim=c(2,2,2))

輸出結(jié)果:

, , 1
     [,1]     [,2]    
[1,] "green"  "green" 
[2,] "yellow" "yellow"
, , 2
     [,1]     [,2]    
[1,] "green"  "green" 
[2,] "yellow" "yellow"

6. 因子Factor怎么用?
Factor表示了一個(gè)向量和向量中不同值的標(biāo)簽。

v <- c(1,1,1,1,2,2,4,3,3,3)
factor_v <- factor(v)
print(factor_v)
print(nlevels(factor_v))

輸出結(jié)果:

 [1] 1 1 1 1 2 2 4 3 3 3
Levels: 1 2 3 4
[1] 4

7. 數(shù)據(jù)幀Data Frame怎么用?
Data Frame可以由不同類型、相同長(zhǎng)度的向量組成。

BMI <- data.frame(
  gender = c("Male", "Male","Female"),
  height = c(152, 171.5, 165),
  weight = c(81,93, 78),
  age = c(42,38,26)
)

輸出結(jié)果:

  gender height weight age
1   Male  152.0     81  42
2   Male  171.5     93  38
3 Female  165.0     78  26

R語(yǔ)言 變量

1. 怎么賦值?
用"=" "<-" "->"賦值
2. 一些常用的函數(shù)
print():打印 print(var)
cat():打印多個(gè) cat("var is ", var)
ls():查找變量,匹配變量名
rm():刪除變量
class():輸出變量類型
is():判斷類型


R語(yǔ)言 運(yùn)算符

1. 算術(shù)運(yùn)算符
+、-、*、/、%%(求余)、%/%(相除求商)、^(指數(shù))
2. 關(guān)系運(yùn)算符
>、<、=、<=、>=、!=
3. 邏輯運(yùn)算符
判斷兩個(gè)向量的所有元素:&、|、!、
判斷兩個(gè)向量的第一個(gè)元素:&&、||
4. 賦值運(yùn)算符
<-、=、<<-、->、->>
5. 其他運(yùn)算符
:(為向量順序創(chuàng)建一系列數(shù)字)、%in%(某元素是否屬于某向量)、%*%(矩陣與其轉(zhuǎn)置矩陣相乘)


R語(yǔ)言 決策

1. if

if(boolean_expression) { }

2. if...else

if(boolean_expression 1) { } 
else if( boolean_expression 2) { }
else { }

3. switch

switch(expression, case1, case2, case3....)

R語(yǔ)言 數(shù)據(jù)重塑

1. 如何將多個(gè)向量合并成一個(gè)數(shù)據(jù)幀?

fruit <- c("Apple", "Orange")
num <- c(1,2)
list1 <- cbind(fruit, num)

2. 如何將兩個(gè)數(shù)據(jù)幀合并在一起?

  1. all.data <- rbind(data1, data2):縱向合并(表里面添加新行)
  2. merge():
    使用的數(shù)據(jù)如下:
ID1 <- c(1,2,3,4)
ID2 <- c(1,2,7,8)
name1 <-c("Peter","Tony","Steve","Tom")
name2 <- c("Peter","Tony","Natasha","Bruce")
student1 <- data.frame(ID1,name1)
student2 <- data.frame(ID2,name2)

①通過(guò)ID1、ID2把兩個(gè)數(shù)據(jù)幀連接起來(lái),取ID的交集
輸出結(jié)果:

total_student<-merge(x = student1, y = student2, by.x="ID1", by.y = "ID2")
  ID1 name1 name2
1   1 Peter Peter
2   2  Tony  Tony

②通過(guò)ID1、ID2把兩個(gè)數(shù)據(jù)幀連接起來(lái),取ID的并集,空缺位置填充為NA

total_student<-merge(x = student1, y = student2, by="ID1", by.y = "ID2", all = T)

all = F時(shí)是交集;all.x = T時(shí)左連接(只有1、2、3、4);all.y = T時(shí)右連接(只有1、2、7、8)
輸出結(jié)果:

  ID1 name1   name2
1   1 Peter   Peter
2   2  Tony    Tony
3   3 Steve    <NA>
4   4   Tom    <NA>
5   7  <NA> Natasha
6   8  <NA>   Bruce

3. 如何拆分?jǐn)?shù)據(jù)
使用melt():
注意需要安裝reshape這個(gè)包。
(使用的數(shù)據(jù)代表學(xué)生期中期末考的成績(jī)。)

install.packages("reshape")
library(reshape)
Name <- c("Tony", "Tony", "Tony", "Steve", "Steve")
Test <- c("Mid","Final","Final","Final", "Final")
Score <- c(100, 100, 60, 80, 95)
Transcript <- data.frame(Name, Test, Score)
molten_Transcript <- melt(Transcript, id = c("Name", "Test"))
print(molten_Transcript)

除Name、Test以外的列被轉(zhuǎn)換為了多行展示:

   Name  Test variable value
1  Tony   Mid    Score   100
2  Tony Final    Score   100
3  Tony Final    Score    60
4 Steve Final    Score    80
5 Steve Final    Score    95

4. 如何重構(gòu)數(shù)據(jù)
使用cast():
cast()中公式左邊的變量會(huì)作為輸出的每一列,右邊的變量是因子,每個(gè)Level都會(huì)在輸出中作為一列。
(把期中期末的成績(jī)加和)

recasted_Transcript <- cast(molten_Transcript, Name+Test~variable,sum)
print(recasted_Transcript)

輸出結(jié)果:

   Name  Test Score
1 Steve Final   175
2  Tony Final   160
3  Tony   Mid   100
?著作權(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)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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