◮ 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
****************************************************************************************************************************************
最快的腳步不是跨越,而是繼續,最慢的步伐不是小步,而是徘徊。
****************************************************************************************************************************************