跳到主要內容

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

留言

這個網誌中的熱門文章

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

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

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

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

【 Intro to Java Programming 】Lesson 1 : Introduction-5 (Algorithms)

This Notes is according to the udacity free course : Intro to Java Programming Lesson 1 : Introduction-5(Algorithms) Key Word : pseudocode Algorithms just like a doing things protocol+condition. Without protocol+condition, you can not make choice or do the decision. So if you want to buy car, you know the car speed and you don't consider the car price or the car condition, so it is your thought, it is the algorithm you buy a car. For computer, we give them the program ===>for them to do algorithm, but now we try to write done in Pseudocode. Pseudocode write in "spoken language" which help us to understand the problem so we can translate them into computer language ==>JAVA Code.org maybe it could help you have fun from learning code