• 沒有找到結果。

開始使用 R 語言

在文檔中 R data (頁 4-10)

注意,R指令的英文大小寫有差異,sS是不同的,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.10.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

?

順伯的窩 第 頁 共 頁

在文檔中 R data (頁 4-10)

相關文件