小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

控制流在R語言里只是一種輔助工具:循環(huán)

 萌小芊 2018-02-17




另外一種控制流語句就是循環(huán),在R里面幾乎很難看到循環(huán),因為絕大多數(shù)循環(huán)都可以使用向量計算的方式解決掉,僅在數(shù)據(jù)抓取時才使用循環(huán),其目的是降低抓取效率,防止被對方封停ip地址,其實循環(huán)很簡單,人們使用循環(huán)的目的是思路簡單,而向量計算思路實現(xiàn)起來就比較困難。

for循環(huán)結(jié)構(gòu)
for (變量 in 清單) 語句for (變量 in 清單) {  語句1  語句2}

最常見的當(dāng)屬for循環(huán),其結(jié)構(gòu)就是for小括號,最容易記住,括號里指定一個變量,將清單中的值依次取出賦值給變量,然后執(zhí)行下面的語句,直到清單中的元素全部取一遍為止,如下:

for循環(huán)
seq(1, 9, 2)for (i in seq(1, 9, 2)) print(i + 1)for (i in seq(1, 9, 2)) { print(i + 1) print(i - 1)}

seq函數(shù)用于生成等差數(shù)列,第一個用于指定數(shù)列的起點,2參數(shù)用于指定參數(shù)的終點,三個參數(shù)用于指定公差;2行開始一個for循環(huán),將序列中的元素一一取出開始循環(huán),循環(huán)的部分為打印元素加1之后的結(jié)果;3行起開始一個for循環(huán),循環(huán)部分是一個代碼塊,打印元素i加1和減1的結(jié)果,當(dāng)清單中的元素執(zhí)行一遍后,循環(huán)自動終止。

for循環(huán)與條件判斷
for (i in seq(1, 9, 2)) {  if(i < 3="" )="" next="" else="" {="" print(i="" +="">

這里我們將上面的for循環(huán)稍加改造添加了一條判斷語句,仍然是從序列中取出元素i,如果元素i小于3,執(zhí)行next函數(shù),表示什么都不干,直接進行下一個元素循環(huán),如果不小于3則打印i加1的結(jié)果。

其實除了for循環(huán),我們還可以使用另外一種循環(huán)形式即while循環(huán),其結(jié)構(gòu)如下:

while
while (條件1) 語句

很簡單幾乎和if語句一樣,就是if語句的重復(fù)形式,舉個例子:

while循環(huán)
a <- 2while="" (a="">< 30)="" {="" print(a)=""><- a="" +="">

1行創(chuàng)建一個對象,并賦值為a;2行起開始一個循環(huán)判斷,如果a小于30,則輸出a的值,同時將a加上4再復(fù)制給a,循環(huán)直到a的值不小于30為止。

其實在R里面絕大多數(shù)的判斷和循環(huán)都是沒必要的,只有極少情況下才會使用控制流,而使用控制流的目的已經(jīng)不再是為了常見的判斷和循環(huán)思維邏輯,可能是為了節(jié)省時間,比如你有1億條文本要清洗處理分詞,如果用向量計算的話丟給分詞函數(shù)一次就可以了,但是1億條還是多少是要花費一段時間的(并行和分布除外);那么問題來了,如果使用向量變成,中間突然出現(xiàn)意外報錯的話,是不會返回結(jié)果的,這樣又要重頭再來,而使用循環(huán)加向量計算的方式可以返回部分已經(jīng)做好的工作,如果中間報錯,下次直接從報錯的那部分開始就可以了。這一部分我們將在代碼優(yōu)化的和思維優(yōu)化的章節(jié)進行詳解。


好主意值得擴散,激發(fā)我們創(chuàng)造的動力,非常感謝花粉傳播者

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多