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

正文內(nèi)容

《r程序設(shè)計(jì)》ppt課件-文庫(kù)吧

2025-04-20 18:22 本頁(yè)面


【正文】 for(xi in x) { cat(xi, 39。\n39。) s s + xi } ? 當(dāng)然 , 如果只是要求各元素的和 , 只要調(diào)用 sum(x)即可 。 從這里我們也可以看出 , 顯式的循環(huán)經(jīng)常是可以避免的 , 利用函數(shù)對(duì)每個(gè)元素計(jì)算值 、 使用 sum等統(tǒng)計(jì)函數(shù)及 apply、lapply 、 sapply、 tapply等函數(shù)往往可以代替循環(huán) 。 因?yàn)檠h(huán)在 R中是很慢的 ( SPLUS和 R都是解釋語(yǔ)言 ) , 所以 應(yīng)盡量避免使用顯式循環(huán) 。 我們?cè)倥e一個(gè)例子 。 比如 , 我們要計(jì)算同生日的概率 。 假設(shè)一共有 365個(gè)生日 ( 只考慮月 、 日 ) , 而且各生日的概率是相等的 ( 這里忽略了閏年的情況以及可能存在的出生日期分布的不均勻 ) 。 設(shè)一個(gè)班有 n個(gè)人 , 當(dāng) n大于 365時(shí)至少兩個(gè)人生日相同是必然事件 。 當(dāng) n小于等于 365時(shí) , 我們可以計(jì)算 P{至少有兩人同生日 }= 1 P{n個(gè)人生日彼此不同 },這時(shí) , n個(gè)人的生日可取值數(shù)為 365n , 而 n個(gè)人彼此不同的可能數(shù)為 365中取 n個(gè)的排列數(shù) , 彼此不同的概率為 P3n65 。因此 , 為了計(jì)算 n= 1, 2, ..., 364的情況下的同生日概率 ,可以用如下循環(huán)實(shí)現(xiàn): ? x = numeric(365) for(i in 1:365) { x[i]= 1 for(j in 0:(i1)) x[i]= x[i] * (365j)/365 x[i] 1 x[i] } 這段程序運(yùn)行了 36秒。我們可以盡量用向量運(yùn)算來(lái)實(shí) 現(xiàn),速度要快得多: ? x numeric(365) for(n in 1:365) { x[n] =1 prod((365:(365n+1))/365) } 這段程序只用了 1秒。注意不能直接去計(jì)算 365!,這會(huì) 超出數(shù)值表示范圍。( choose(n, k) 、 factorial(k) ) ?另外要注意使用 for(i in 1:n)格式的計(jì)數(shù)循環(huán)時(shí)要避免一個(gè)常見(jiàn)錯(cuò)誤 , 即當(dāng) n為零或負(fù)數(shù)時(shí) 1:n是一個(gè)從大到小的循環(huán) , 而我們經(jīng)常需要的是當(dāng) n為零或負(fù)數(shù)時(shí)就不進(jìn)入循環(huán) 。 為達(dá)到這一點(diǎn) , 可以在循環(huán)外層判斷循環(huán)結(jié)束值是否小于開(kāi)始值 。 ?while循環(huán)是在開(kāi)始處判斷循環(huán)條件的當(dāng)型循環(huán),如: ? While (baeps) { c (a+b)/2。 if (f(c)0) b c else a c } 是一段二分法解方程的程序。 還可以使用 ?repeat 表達(dá)式 循環(huán),在循環(huán)體內(nèi)用 break跳出。 在一個(gè)循環(huán)體內(nèi)用 next表達(dá)式可以進(jìn)入下一輪循環(huán)。 如 i=1。x=rnorm(1)。repeat{x=x+rnorm(1)。 if(x3)break。i=i+1}。print(c(i,x)) ?分支和循環(huán)結(jié)構(gòu)主要用于定義函數(shù)及模擬重復(fù)。 利用二分法求方程的根: fzero(f,1,2,1e6) fzerofunction(f, a, b, eps=1e5){ if (f(a)*f(b)0) list (fail=“finding root is fail!) else { repeat { if (abs(ba)eps) break x(a+b)/2 if (f(a)*f(b)0) bx else ax } list(root=(a+b)/2, fun=f(x)) } } ffunction(x) {x^3x1} fzero(f,1,2,1e6) 實(shí)際上: uniroot(f,c(1,2)) $root [1] $ [1] $iter [1] 7 $ [1] 控制語(yǔ)句的幾個(gè)簡(jiǎn)單示例 ? x=NULL。for(i in 1:5)x=cbind(x,i^2) [,1] [,2] [,3] [,4] [,5] [1,] 1 4 9 16 25 ? i=1。x=NULL。 while(i=5){x=cbind(x,i^2)。i=i+1} ? x=rnorm(1)。 if (x0) y=x else y=x+10 ? i=1。x=rnorm(1)。repeat{x=x+rnorm(1)。if(x3)break。i=i+1}。print(c(i,x)) 怎么調(diào)出 Packages來(lái)使用 ? Packages:libraries 敲 library(),就知道有什么 libraries了 ,缺省 library是 mass,就敲 library(MASS) 每個(gè) library都有許多數(shù)據(jù) 在每個(gè) library敲 data(),就知道有什么數(shù)據(jù)了 比如敲 data(Titanic),就調(diào)出數(shù)據(jù) Titanic來(lái)了 . 注意 :R語(yǔ)言對(duì)大小寫(xiě)敏感 . R程序設(shè)計(jì) 對(duì)于復(fù)雜一些的計(jì)算問(wèn)題應(yīng)該編寫(xiě)成函數(shù)。這樣做的好處是: ?編寫(xiě)一次可以重復(fù)使用,并且便于修改 ?函數(shù)內(nèi)的變量名是局部的,運(yùn)行函數(shù)不會(huì)使函數(shù)內(nèi)的局部變量被保存到當(dāng)前的工作空間,可以避免在交互狀態(tài)下直接賦值定義很多變量使得工作空間雜亂無(wú)章。 工作空間管理 ?前面我們已經(jīng)提到 , R在運(yùn)行時(shí)保持一個(gè)變量搜索路徑表 , 要讀取某變量時(shí)依次在此路徑表中查找 ,返回找到的第一個(gè);給變量賦值時(shí)在搜索路徑的第一個(gè)位置賦值 。 但是 , 在函數(shù)內(nèi)部 , 搜索路徑表第一個(gè)位置是局部變量名空間 , 所以變量賦值是局部賦值 , 被賦值的變量只在函數(shù)運(yùn)行期間有效 。 ?用 ls()函數(shù)可以查看當(dāng)前工作空間保存的變量和函數(shù),用 rm()函數(shù)可以剔除不想要的對(duì)象。如: ? ls()(或 objects()) 函數(shù)定義 ?R中函數(shù)定義的一般格式為 “ 函數(shù)名 = function(參數(shù)表 ) {表達(dá)式 }”。定義函數(shù)可以在命令行進(jìn)行,例如 ? hello = function(){ cat(Hello, are you a good student?\n) 。 cat(\n) 。} ? hello (查看函數(shù)具體內(nèi)容) function(){ cat(Hello, are you a good student?\n) 。 cat(\n) 。} ? hello() (運(yùn)行函數(shù)) Hello, are you a good student? ?函數(shù)體為一個(gè)復(fù)合表達(dá)式,各表達(dá)式的之間用換行或分號(hào)分開(kāi)。不帶括號(hào)調(diào)用函數(shù)顯示函數(shù)定義,而不是
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1