跳到主要內容

R 語言翻轉教室-2

Lesson 2 :  Object 入門操作


R的object結構是依照針對資料結構分析所設計的。

最簡單的object 即為一串數字 

一般程式語言最簡單的object則為一個數字。


若要儲存一個向量到變數“x”當中:

example:
要用R 建立一個內容為10.4, 5.6, 3.1和6.4的向量, 最常用的方式就是輸入:`c(10.4, 5.6, 3.1, 6.4)` 請同學依照這樣的語法建立一個這樣的向量,並且把它存為變數x。

Ans:x <- c(10.4, 5.6, 3.1, 6.4)

欲求出變數向量的最大最小值:
c(min(x), max(x))
欲求出範圍:
range(x)
欲求出向量平均:
sum(x)/length(x)(總和/向量長度)

x的樣本變異數:sum(x -mean(x))^2) / (length(x)-1)

其實可以直接使用var(x)


*在數學中,計算中輸入的x ,代表的可能是整數、實數或甚至是複數。而R 中的數學計算,則會自動根據x 的屬性做出調整。

舉例來說,如果輸入`sqrt(-17)`,我們會得到NaN(Not A Number)的結果。
請同學試試看輸入`sqrt(-17)`。這裡的`sqrt`代表的是數學上開根號的運算

 R 也具備有簡易的功能,可以產生一些附帶有規則的序列。
| 例如:`1:10`就會產生自1 至10的序列
| 這樣的功能,在整理資料時十分實用。
| 舉例來說,如果需要取出第5筆到第100筆的資料,就會用到類似的語法。
| 請同學利用`:`建立一個從20到40的序列。

比較廣泛的用法是產生向量:seq(1,10)


 我們可以在說明文件上,閱讀 Default S3 method
| 之下的那段說明程式碼: `seq(from = 1, to = 1, by = ((to -
| from)/(length.out - 1)), length.out = NULL, along.with = NULL,
| ...)`
| 這段說明文字顯示了`seq`可以接受五個參數,分別為:`from`、`to`、`by`、`length.out`和`along.with`。

實際使用範例:

seq> seq(0, 1, length.out = 11) #0~1之間產生總共10個數字
 [1] 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0

seq> seq(stats::rnorm(20)) # effectively 'along' #從預設數字(1)產生20,會依照預設間隔一單位整數
 [1]  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20

seq> seq(1, 9, by = 2)     # matches 'end' #在1~9之間(包含9),找出間隔2的數值
[1] 1 3 5 7 9

seq> seq(1, 9, by = pi)    # stays below 'end' #同上
[1] 1.000000 4.141593 7.283185

seq> seq(1, 6, by = 3)
[1] 1 4

seq> seq(1.575, 5.125, by = 0.05)
 [1] 1.575 1.625 1.675 1.725 1.775 1.825 1.875 1.925 1.975 2.025
[11] 2.075 2.125 2.175 2.225 2.275 2.325 2.375 2.425 2.475 2.525
[21] 2.575 2.625 2.675 2.725 2.775 2.825 2.875 2.925 2.975 3.025
[31] 3.075 3.125 3.175 3.225 3.275 3.325 3.375 3.425 3.475 3.525
[41] 3.575 3.625 3.675 3.725 3.775 3.825 3.875 3.925 3.975 4.025
[51] 4.075 4.125 4.175 4.225 4.275 4.325 4.375 4.425 4.475 4.525
[61] 4.575 4.625 4.675 4.725 4.775 4.825 4.875 4.925 4.975 5.025
[71] 5.075 5.125

seq> seq(17) # same as 1:17, or even better seq_len(17)
 [1]  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17


rep(x, times =2)
[1] 10.4  5.6  3.1  6.4 10.4  5.6  3.1  6.4
rep(x, each=2)
[1] 10.4 10.4  5.6  5.6  3.1  3.1  6.4  6.4


條件類型expression
| 邏輯值「真」常用`TRUE`或`T`來代表。「假」則用`FALSE`或`F`代表。
| 第三種在邏輯向量會出現的值,就是NA(Not Available)

| 注意:這裡的`T`和`F`所對應到的`TRUE`或`FALSE`變數只是預設值,並不是保留。如有需要,是可以更改`T`和`F`的內容的!

利用`is.na`來判斷一個向量裡面是否有NA存在。

題目:x <- c(1,2,3,4)

is.na(x)

[1] FALSE FALSE FALSE FALSE

NA代表的是缺失值,而NaN 大多來自於數學運算中沒有定義的行為。


| 在R 中,`paste`為經常用來做字串處理的函數。
| 我們可以丟任意個Argument 給`paste`,結果R
| 會把這些argument以字串的形式接成一個字串。
| 請同學試試看:`paste("a", "b")`

> paste("a", "b")

[1] "a b"

>paste0("a","b")
[1] "ab"



4種擷取資料的方法
使用座標法:x[c(1,3)]
使用邏輯向量:x[x > 5]
削去法:如果我們要挑序列x中除了第二個數值之外全部的值,x[-2]
命名法:


回家作業個人解答:連結

本課程筆記參考課程:01-RBasic-02-Data-Structure-Vectors

留言

這個網誌中的熱門文章

第一章 電腦、網際網路與全球資訊網簡介

C++  How to Program 7/E 筆記 第一章 電腦、網際網路與全球資訊網簡介 學習目標 基本軟硬體觀念 物件技術觀念(類別、物件、屬性、行為、封裝、繼承) 程式語言的種類 典型的C++開發環境 業界標準物件導向素模語言——UML 沿革 網際網路、球球資訊網與Web 2.0現象的沿革 在Linux 的GNU C++ 與在Microsoft Visual C++環境中測試C++ 應用程式 *結構化程式設計(structured programming) *物件導向程式設計

【Quora 翻譯&整理】對於程式初學者嘗試解決問題的好網站推薦

原文出處: What are some suggested websites to solve programming problems for beginners? (2016/5/15) 此篇文章強調的是去參加project的那種網站推薦

C++ How to Program 7/E 筆記 -- 第四章 控制敘述:第一部份

C++  How to Program 7/E 筆記 第四章 控制敘述:第一部份 學習目標 基本的問題解決技術 以由上而下,逐步修改的程序,開發演算法 使用if  和 if ...else 選擇敘述選擇要執行的動作 使用while重複敘述反覆執行程序中的敘述 技術控制重複與警示控制重複 使用遞增、遞減和指定運算子