freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

r程序設(shè)計(jì)ppt課件(已修改)

2025-05-17 18:22 本頁(yè)面
 

【正文】 第五講 R的數(shù)據(jù)結(jié)構(gòu) (三 ) 程序設(shè)計(jì) 目的: 學(xué)習(xí) R中程序設(shè)計(jì)方法 內(nèi)容: 1. 程序設(shè)計(jì)方法 2. 實(shí)例 3. 作業(yè) 程序控制結(jié)構(gòu) ?R是一個(gè)表達(dá)式語(yǔ)言 , 其任何一個(gè)語(yǔ)句都可以看成是一個(gè)表達(dá)式 。 表達(dá)式之間以 分號(hào)分隔或用換行分隔 。 表達(dá)式可以續(xù)行 , 只要前一行不是完整表達(dá)式 ( 比如末尾是加減乘除等運(yùn)算符 , 或有未配對(duì)的括號(hào) ) 則下一行為上一行的繼續(xù) 。 ? 若干個(gè)表達(dá)式可以放在一起組成一個(gè)復(fù)合表達(dá)式,作為一個(gè)表達(dá)式使用。 組合用大括號(hào) 表示,如: ? { x 15 x } ?R語(yǔ)言也提供了其它高級(jí)程序語(yǔ)言共有的分支、循環(huán)等程序控制結(jié)構(gòu)。 分支結(jié)構(gòu) ?分支結(jié)構(gòu)包括 if結(jié)構(gòu): if (條件 ) 表達(dá)式 1 或 if (條件 ) 表達(dá)式 1 else 表達(dá)式 2 ? 其中的 “ 條件 ” 為一個(gè) 標(biāo)量 的真或假值,表達(dá)式可以是用大括號(hào)包圍的復(fù)合表達(dá)式。有 else 子句時(shí)一般寫(xiě)成: if(條件 ) { 表達(dá)式組 …… } else { 表達(dá)式組 ……… } 這樣的寫(xiě)法可以使 else不至于脫離前面的 if。 if else(test,yes,no) ? 例如 , 如果變量 lambda為缺失值就給它賦一個(gè)缺省值 , 可用: if((lambda)) lambda 。 ? 又比如要計(jì)算向量 x的重對(duì)數(shù) , 這只有在元素都為正且對(duì)數(shù)都為正時(shí)才能做到 , 因此需要先檢查: if (all(x0) amp。amp。 all(log(x) 0)) { y log(log(x))。 print(cbind(x,y))。 } else { cat(39。Unable to ply\n39。)。 } ? 注意 “ amp。amp?!北硎?“ 與 ” ,它是一個(gè) 短路運(yùn)算符 ,即第一個(gè)條件為假時(shí)就不計(jì)算第二個(gè)條件。如果不這樣此例中計(jì)算對(duì)數(shù)就可以有無(wú)效值。 ? 在條件中也可以用 “ ||”(兩個(gè)連續(xù)的豎線符號(hào))表示 “ 或 ” ,它也是短路運(yùn)算符,當(dāng)?shù)谝粋€(gè)條件為真時(shí)就不再計(jì)算第二個(gè)條件。 ? “ amp。amp?!?、 “ ||”只對(duì)標(biāo)量適用,而 “ amp?!?、 “ |”適用于向量 ?在用 R編程序時(shí)一定要時(shí)刻牢記 R是一個(gè) 向量語(yǔ)言 ,幾乎所有操作都是對(duì)向量進(jìn)行的 。 而 R中的 if語(yǔ)句卻是一個(gè)少見(jiàn)的例外 , 它的判斷條件是標(biāo)量的真值或假值 。 比如 , 我們要定義一個(gè)分段函數(shù) f(x), 當(dāng) x為正時(shí)返回 1, 否則返回 0, 馬上可以想到用 if語(yǔ)句實(shí)現(xiàn)如下: if(x0) 1 else 0 ? 當(dāng) x是標(biāo)量時(shí)這個(gè)定義是有效的,但是當(dāng)自變量 x是一個(gè)向量時(shí),比較的結(jié)果也是一個(gè)向量,這時(shí)條件無(wú)法使用。所以,這個(gè)分段函數(shù)應(yīng)該這樣編程: y= numeric(length(x)) y[x0] 1 y[x=0] 0 ?有多個(gè) if語(yǔ)句時(shí) else與最近的一個(gè)配對(duì) 。 可以使用if ... else if ... else if ... else ...的多重判斷結(jié)構(gòu)表示多分支 。 多分支也可以使用 switch()函數(shù) 。 help(swicth) ? switch(base) Select One of a List of Alternatives ? Description switch evaluates EXPR and accordingly chooses one of the further arguments (in ...). ? Usage ? switch(EXPR, ...) ? Arguments ? EXPRan expression evaluating to a number or a character string....the list of alternatives, given explicitly. ? Details ? If the value of EXPR is an integer between 1 and nargs()1 then the corresponding element of ... is evaluated and the result returned. ? If EXPR returns a character string then that string is used to match the names of the elements in .... If there is an exact match then that element is evaluated and returned if there is one, otherwise the next element is chosen, ., switch(cc, a=1, cc=, d=2) evaluates to 2. ? In the case of no match, if there39。s a further argument in switch that one is returned, otherwise NULL. ? See Examples ? Examples ? require(stats) centre function(x, type) { switch(type, mean = mean(x), median = median(x), trimmed = mean(x, trim = .1)) } x rcauchy(10) centre(x, mean) centre(x, median) centre(x, trimmed) ccc c(b,,a,A,bb) for(ch in ccc) cat(ch,:,switch(EXPR = ch, a=1, b=2:3), \n) for(ch in ccc) cat(ch,:,switch(EXPR = ch, a=, A=1, b=2:3, Otherwise: last),\n) Numeric EXPR don39。t allow an 39。otherwise39。: for(i in c(1:3,9)) print(switch(i, 1,2,3,4)) 循環(huán)結(jié)構(gòu) ?循環(huán)結(jié)構(gòu)中常用的是 for循環(huán),是對(duì)一個(gè)向量或列表的逐次處理,格式為 “ for( name in values) 表達(dá)式 ” ,如: ? for(i in seq(along=x)){ cat(?x(?, i, ?) = ?, x[i], ?\n?, sep=??)。 s s+x[i]。 } 這個(gè)例子我們需要使用下標(biāo)的值,所以用 seq(along=x)生成了 x的下標(biāo)向量。 ? 如果不需要下標(biāo)的值,可以直接如此使用:
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
公安備案圖鄂ICP備17016276號(hào)-1