注意, 在R指令的英文大小寫有差異,s與S是不同的,R 也保留一些物件與指令名稱, 如 ,s, C, T,
F等, 這些叫做"保留名字 另外一些系統常用的指令名稱,如 q st CD FI Tdimean pirange
rank var
· · ·
對物件命名時盡量避免定義一個物件, 與現有的物件同名. 所以命名時要避免重覆, 以 免後來引起錯亂。 對物件命名時, 物件名稱起始位置須以文字或". (句點), 若物件名稱以". (句點) 為起始,名稱第二個位置需為文字, 物件名稱其餘位置,以文字(A − Z
或a − z
),數字 (0 − 9
),"/
,"., 或"
−
, 皆可,中間不可有空格或 "R 的最基本物件是向量,"向量 是指包含相同"模式 (mode) 的元素 (element) 組成, 主要有6 種基本模式 邏輯 logi al, 整數 integer, 倍精準度 double, 單精準度 single, 複數 omplex, 及文字
hara ter, 同一向量內的元素不可混合。
求助指令 help: 用help("指令) 可幫助了解該指令的操作功能。 help(topi )
R 數值基本運算: 加+,減 -, 乘*, 除/, 整數商%/%(高斯商數), 餘數 %%(mod), 冪次方 ** 或 ^ 範例 1: 在命令列輸入下列指令後按 Enter 鍵,看看輸出結果
> 2 - 1 * 2
> -1/-1 #除法運算
> 6/3 -2+1*0+3/3-3
> 2**-3 # 指數運算
> 2^17%% 17 #求餘數
> 19 %% 17 %% 13 # ompare to (19 %% 17) %% 13 and 19 %% (17 %% 13)
> 3-2 %% 5+3 *2-4/2
建立資料: 用 指令建立資料
R軟體中有六種屬性資料, 分別為
1. 文字字串 ( hara ter) : "a", "sw "
2. 數值 (numeri ): 實數 2,15.5 ,...
3. 整數 (integer): 3,2L ,(R 中儲存資料視 L 為一整數)
4. 邏輯 (logi al): TRUE, FALSE
5. 複數 ( omplex):
1 + 4i
(分為實數部分+虛數部分)6. 二進位資料 (raw):01011001,
mydata 資料名稱, 可自己建立。= 亦可使用 <- 。 資料為向量資料 範例 2: 輸入資料
>mydata1 = (1,2,3,4,5,6,7,8,9)
> mydata1
[1℄ 1 2 3 4 5 6 7 8 9
順伯的窩 第 頁 共 頁
>mydata2<- 2:10
> mydata2
[1℄ 2 3 4 5 6 7 8 9 10
> mydata<- (mydata1,mydata2) #合併兩向量資料
> mydata
[1℄ 1 2 3 4 5 6 7 8 9 2 3 4 5 6 7 8 9 10
範例 3: 資料運算
> 1/mydata1 #向量資料算術運算
[1℄ 1.0000000 0.5000000 0.3333333 0.2500000 0.2000000 0.1666667 0.1428571
0.1250000 0.1111111
> mydata1^2
[1℄ 1 4 9 16 25 36 49 64 81
> 2*mydata1+1
[1℄ 3 5 7 9 11 13 15 17 19
> log(mydata1,10) #對向量資料每一元素取函數值
[1℄ 0.0000000 0.3010300 0.4771213 0.6020600 0.6989700 0.7781513 0.8450980
0.9030900 0.9542425
> mydata1*mydata2 #兩向量兩兩乘積
[1℄ 2 6 12 20 30 42 56 72 90
#自定義運算式
> xi<- (mydata1,10)
> xi
[1℄ 1 2 3 4 5 6 7 8 9 10 # 等同 seq(1,10,by=1)
> sum((xi - mean(xi))^2)/(length(xi)- 1)
[1℄ 9.166667
> xi>5 # 資料邏輯
[1℄ FALSE FALSE FALSE FALSE FALSE TRUE TRUE TRUE TRUE TRUE
> xi[as.logi al((xi > 8) + (xi < 3))℄
[1℄ 1 2 9 10
#modifying subset of ve tor
> xi[log(xi,10) < 0.5℄ <- 2
> xi
[1℄ 2 2 2 4 5 6 7 8 9 10
表 2: 向量變數常用指令函數
指令 用法說明簡介
() 建立向量或聯結不同的向量
length(x) 算出資料 x 的筆數
x[2℄ (i = 2)
x i
資料x[-2℄ (i = 2) x 資料中除了第 i筆資料
x[1:5℄ (k = 5) x 資料的前5筆資料
x[(length(x)-5):length(x) ℄ (k = 5) x 資料 (前5筆資料除外)
x[ (1,3,6)℄ (First, 3rd and 6th) x 資料中的第1,3,6筆資料
x[x>3℄ (the value is > 3) x 資料中數值比3大的資料
x[x < −2|x > 2]
x 資料中數值比2大或小於-2的資料whi h(x == max(x)) x 資料中第幾筆數值為最大值
umax(x); umin(x) 呈現x 資料中累積最大值 (最小值)
範例 5: R 指令函數
> x = (45,43,46,48,51,46,50,47,4 6,45 ) # Entering data with
> x = (x,48,49,51,50,49) # append values to x
> x[16℄ = 41;x[17:20℄ = (40,38,35,40) # add to many spe ified indi es
> x # print x data
[1℄ 45 43 46 48 51 46 50 47 46 45 48 49 51 50 49 41 40 38 35 40
> ummax(x) # running maximum
[1℄ 45 45 46 48 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51
> ummin(x) # running minimum
[1℄ 45 43 43 43 43 43 43 43 43 43 43 43 43 43 43 41 40 38 35 35
範例 6: 數值上的陷阱 1-0.9==0.1
R 軟體中儘管1 可以被完美地精確表示, 而對 0.1 和 0.9 卻做不到。 使用函數 all.equal()
來比較兩個數, 因為它包含一個可以指定數值容忍限的參變數。
> 1-0.9==0.1
[1℄ FALSE
> all.equal(1.0-0.9,0.1,tol=1 0^(- 6))
順伯的窩 第 頁 共 頁
[1℄ TRUE
> all.equal(pi,3.14159,tol=10 ^(-6 ))
[1℄ TRUE
> all.equal(pi,3.14159,tol=10 ^(-7 ))
[1℄ "Mean relative differen e: 8.446639e-07"
範例 7: 數值的精密度:formatC(x,digits =50) 最高50位
[1℄ "0.10000000000000000555" # 與數值 1-0.9 不同
> formatC(2^0.00000000001/2^0 .000 0000 1,5)
[1℄ " 1"
> formatC(2^0.00000000001/2^0 .000 0000 1,10 )
[1℄ "0.9999999931"
> 2^0.0000000000000001==2^0.0 0000 0000 0000 0000 0000 0000 0001
[1℄ TRUE #兩數相差值已小於數值精密度容忍度 (接受兩數相等)
> 2^0.000000000000001==2^0.00 0000 0000 0000 0000 0000 0000 001
[1℄ FALSE #兩數相差值尚未小於數值精密度容忍度 (不接受兩數相等)
(d) root.of.four <- sqrt(4)
(e) x<-1; x< -1
(h) 鍵入TRUE + T +FALSE*F + T*FALSE +F ,輸出結果為何?
3. 用 R語言計算下列值?
(a)
|2 3 − 3 2 |
值 ?(b)
e e
( )
(2.3) 8 + ln(7.5) − cos(π/3)
4. 用 R語言計算下列值?
(a)
6!
值 ?(b) 組合數
C 5 52
( )
log 10 π
值5. 用 R語言計算下列值?
(a)
4 3 + 3 2+1 =
?(b)
p (4 + 3)(2 + 1)
( )
( 1 + 2 3 + 4 ) 2
6. 由螢幕輸入 x<-pi 求列印出
π
小數點部份(小數點後10位)7. 用 R語言輸入下列指令, 預期產生的值為何?
(a) 2+3*4
(b) 2/3/4
( ) 2^3^4
8. 在 R中輸入 >z= (0,0,0,2,0) 後, 依序下列步驟
(a) 輸入 >z[ (1,5)℄ <- 1 預期 z 產生的結果為何?
(b) 輸入 >z[whi h.max(z)℄ <- 0 預期 z產生的結果為何?
( ) 輸入 >z[z==0℄ <- 8 預期 z產生的結果為何?
9. 在 R中輸入下列指令後, 預期產生的輸出結果為何?
(a) (1,4)* (2,3)
(b) (1:3)[any( (T,F,T))℄
( ) (1:3)[all( (T,F,T))℄
(d) (T,T,F) (F,T,F)|
(e) (T,T,F) | (F,T,F)|
(f) n har( ("ab d","efg"))
10. 用 sum() 指令求
1 + 2 + 3 + · · · + 99 + 100
11. 用 sum() 指令求
1 + 1 2 + 1
3 + · · · + 1 10
12. 用 R語言計算求兩向量點積
[2, 5, 6, 7]
,[−1, 3, −1, −1]
順伯的窩 第 頁 共 頁
13. 資料 x:17 1620 2422 152115 1722
(a) 如何找出資料 x 的最大、 最小值?
(b) 若其中一筆資料 24為錯誤值, 如何更正為 18,並命名新變數為 newx
( ) 有哪幾筆資料超過20,其資料為何? 總和為多少?
14. 若去年一年手機的通話費用 (美元) 為46 333937 4630 483249 3530 48
(a) 用"bill為名,建立資料? 用 sum 指令求去年總通話費?
(b) 哪一月份費用最多? 哪一月份費用最少?
( ) 哪一月份費用超過40,其比率為多少?
15. 在 R軟体中, 使用下列指令, 預期其結果為何? > x = (1,3,5,7,9)
> y = (2,3,5,7,11,13)
(a) x+1
(b) y*2
( ) length(x)及 length(y)
(d) x + y
(e) sum(
x > 5
) 及 sum(x[x > 5]
)(f) sum(
x > 5|x < 3
) 符號|
為 "'or, & 為"and(g)
y[3]
(h)
y[−3]
(i)
y[x]
(What is NA?)(j)
y[y >= 7]
16. 若在 R 軟体中建立資料 x = (1, 8, 2,6, 3,8, 5,5, 5,5)並令
x i
表示第i
筆資料, 用指令完 成下列式子(a)
(x 1 + x 2 + · · · + x 10 )/10
, 用 sum() 指令(b) 求
log 10 x i , ∀i
, (用log() 指令, 內定基底為e)( ) 求
(x i − 4.4)/2.875, ∀i
, (用一次指令完成)(d) 求x 全距 , 用max() 和 min() 兩指令
17. 用 R語言計算
log 2 + log 3 + log 4 + · · · + log 9
值?順伯的窩 第 頁 共 頁