---
# System prepended metadata

title: R 語言
tags: [Hadoop, 大數據分析]

---

---
title: R 語言
tags: 大數據分析,Hadoop
description: 
lang: zh
---
# R 語言教學
###### tags: 大數據視覺化實務,bigdata,opendata,hadoop

## 變數資料型態種類

在R語言中，常見的基礎資料型態包含下列幾種
* 數字型態
* 文字型態
* 布林型態
* 日期型態


### 變數宣告方式
```r=
A1 = 35 
A1 <- 40
```

### 常見數值型態
* 在R語言中所有的東西都是物件
* 物件的部分有分為常數跟變數
* 常數分為 數值 跟 文字型態
```r=
A1 = 35L #整數型態 (integer)
A2 = 2.75 # 浮點數 (numeric)
A3 = 3.14 + 2i # 複數型態 (complex)
```

### R語言變數型態判別
```r=
class(A1)
```
## 常見資料結構
### 向量(Vector)
* 一種的物件容器(一維)
* 可以包含文字或是數字或是任意物件


#### 向量宣告方式
```r=
A1 = 1:10 #產生1-10連續的數字
A2 = c(1,1,2,6,9,12,11) #產生1,3,2,6,9,12,11
A3 = c(A1 , A2) #利用c 組合兩個序列
```

#### 針對Vector可以為每個屬性取不同的名字
```r=
A1 = c(Jerry = 10 , Tom = 13 , Jack = 12)
A2 = names(A1)
names(A1) = c("C1","C2","C3")
```

#### 同理我們可以使用Vector的名稱來取得相關對應的值
```r=
print(A1["C3"])
```

#### 向量的四則運算
* 在R語言中向量可以進行簡易的四則運算 如 + - * /
```r=
A4 = A1 * 2 #將A1序列中每個元素都放大兩倍
A5 = A2 + 50 #將A2序列中每個元素都+50
A6 = A1 + A2 #錯誤 不同大小的序列無法進行加總
```

:::warning 
在R語言中若向量大小不一致時會發生 錯誤
錯誤訊息:longer object length is not a multiple of shorter object length
:::

#### 向量元素值的取值與塞選
當一個向量元素已經決定時，我們需要針對這個向量取得特定條件下的元素可以使用塞選的方式來取得
```r=
A7 = A5[1] #取得A5中第1個元素
A7 = A5[3] #取得A5中第3個元素
A7 = A5[c(1,3,5)] #取得A5中第1,3,5個元素
A7 = A5[A5 >= 60] #取得A5中>=60的元素值
```

#### 常用的向量函數
```r=
    A5 = length(A2) #取得向量的大小
    length(A2) = 10 #設定向量的大小

    which(A2 %% 3 == 0) #回傳符合條件的向量索引值(index)
```


### 序列(Sequences)
#### 序列的使用方式
```r=
A1 = 5:15
A2 = seq(from=5,to=15,by=2)
A3 = seq(from=5,by=0.1,length = 10)
A4 = seq_along(A3) #取得A3的長度n，並回傳一個 1:n 的序列
```


### 矩陣(martix)
* 一種的物件容器(二維)
* 可以包含文字或是數字或是任意物件

#### 矩陣的宣告與初始化
* 一個矩陣在宣告時需要告知行與列的數量
```r=
A1 = matrix(data= 0 , nrow=5,ncol = 3) #宣告一個5*3大小的矩陣且預設值為0
A1 = matrix(data= 1:15 , nrow=5,ncol = 3) #宣告一個5*3大小的矩陣且預設值為1-15
A1 = matrix(data= c(1,3,2,6,4,5,8,2,1,4,12,12,16,21,15) , nrow=5,ncol = 3) #宣告一個5*3大小的矩陣且預設值為1-15
```

#### 矩陣的data frame
* 相對於Vecor 矩陣可以針對行與列設定欄位名稱

```r=
#方法一:宣告矩陣的同時賦予欄位名稱
A1 = matrix(data= c(1:15) , nrow=5,ncol = 3 , dimnames = list(
                c("A1", "A2","A3","A4","A5"),
                c("B1", "B2", "B3"))
) 

#方法二:先宣告矩陣 再賦予欄位名稱
A1 = matrix(data= c(1:15) , nrow=5,ncol = 3 , byrow = TRUE) #宣告一個5*3大小的矩陣且預設值為1-15
dimnames(A1) <- list(c("A1", "A2","A3","A4","A5"),
                     c("B1", "B2", "B3")) #賦予欄位名稱
```

