1. 程式人生 > >◮ R語言筆記(六): 迴圈與R指令碼

◮ R語言筆記(六): 迴圈與R指令碼

前面幾部分介紹了向量、矩陣、陣列等的操作,

接下來就要講到迴圈輸出的內容,這就涉及了R語言中的迴圈語句的表達:

for() 迴圈

while() 迴圈

接下來再介紹R指令碼的編寫與使用;

****************************************************************************************************************************************

一:迴圈

1:for() 迴圈 ---->>> 注意for迴圈的語法規則~

> a = 0

> for(i in 1:60) {a[i]=i*5+1}    
#這裡面的a變數首先要初始化,但是i可以不用初始化,因為在迴圈條件中已經預設初值為1了

> a

> print(a)    
#這裡務必需要說一下print()函式,因為下面的指令碼語言中需要使用print()函式輸出,
#其的功能和在控制檯直接輸入變量回車有相同的功能

2:while() 迴圈

> i = 1; b = 0            #這裡就要注意賦初值了,否則就一直在程式中死迴圈還退不出去~
> while(i<60) {b[i]=i*5+9}    #這個是死迴圈,因為i一直保持為1

###################

> a = 0;b = 0
> while(a<60){b[a]=a+1;a=a+1}
> b
[1]  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
[31] 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60

> print(b)
[1]  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
[31] 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60

二:R指令碼

關於什麼是指令碼,這裡首先介紹一下:

“指令碼”:從字面上理解,“腳”是用來走的,為了目的可以一直不停的走,直到實現了自己最初定的那個目標,那“本”呢,當然就是把腳要走的路記在小本子上,以免走上歪門邪道。這樣就好理解了~

指令碼是按照一定順序編寫的程式碼序列,其可以由計算機自動按照順序執行併產生預期的效果。

★首先附上一段與本程式無關的bat批處理關機指令碼(不能在R中執行~)來引出R語言中的指令碼:

::注意使用管理員許可權執行該程式
@echo off
MODE con: COLS=40 LINES=6
color b & title 自動關機&重啟程式
cls
echo 1.關機         2.重啟
set /p id=請選擇您要操作的專案:
if %id%==1 goto 1
if %id%==2 goto 2
:1
set /p t=請輸入在多久後自動關機,單位分鐘:
set /a t=t*60
shutdown -s -t %t%
exit
:2
set /p t=請輸入在多久後自動重啟,單位分鐘:
set /a t=t*60
shutdown -r -t %t%
exit

★R指令碼

1:命名 .r

    2:  配合source("xxx.r")函式使用 (如果不在工作目錄下,需要手動新增路徑地址,注意是雙斜線,單斜線是轉義符)

    3:指令碼程式碼編寫要求

          要求?不存在的,就像在控制檯裡面一樣寫程式碼就ODK了,但是需要注意的是輸出語句要使用print()函式;

x1 = round(runif(100,min=80,max=100))
# 80~100之間產生100個隨機數並使用round()函式進行四捨五入
print(x1)
x2 = round(rnorm(100,mean=80,sd=18))
x2[which(x2>100)]=100
print(x2)

 ------->>> 執行結果:

> source("demo_01.r")

[1]  84  82  83  89  94  94  82  98  89  83  90  95  89  85  99  80  96  89  98  93  80  82  97  86  84
[26]  93  84  85  98  85  96  96 100  82  92  99  96  82  85  94  98  83  89 100  96  85  82  92  90  90
[51]  95  97  82  83  93  84  94  95  84  93  97  87  94  96  86  97  91  89  83  83  85  94  87  97  99
[76]  81  98  90  93  97  87  99  83  86  97  97  83  87  87  91  89  95  92  86  91  81  82  83  82  88

[1]  67 100  80  92  64  96  74  92  79  68  94  96  64  58  76  80  82  82  78 100  91  82 100 100  76
[26]  79  70  55  65  70  72  88  92  89  68  69  69  79  66  75  83  80  72  99  87  85  92  88  63  96
[51]  69  92  70  76  52  66  70  83  56  56 100  95  96  81  91 100  83  77  76  92  55 100  72 100  81
[76]  91  79  51  89  60  67  93  65  38  94  82  65  63  63  92  90  80  88  93  91 100 100  74  75  89

****************************************************************************************************************************************

             最快的腳步不是跨越,而是繼續,最慢的步伐不是小步,而是徘徊。  

****************************************************************************************************************************************