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
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
留言
張貼留言