课件:利用多发病例家族之单倍体资料进行遗传相关性研究.ppt_第1页
课件:利用多发病例家族之单倍体资料进行遗传相关性研究.ppt_第2页
课件:利用多发病例家族之单倍体资料进行遗传相关性研究.ppt_第3页
课件:利用多发病例家族之单倍体资料进行遗传相关性研究.ppt_第4页
课件:利用多发病例家族之单倍体资料进行遗传相关性研究.ppt_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

條件與迴圈等程式技巧,Data Frames,Data frames: it is a rectangular table with rows and columns; data within each column has the same type (e.g. number, text, logical), but different columns may have different types.,資料篩選,資料轉換(變更coding),將資料按照性別分成兩群,令新變數為sex_c 男生(原始資料記為1): sex_c=“male” 女生(原始資料記為0): sex_c=“female” 將資料按照年紀分成四群,另外令一個變數為agegroup 第一群:40歲以下,則agegroup=1 第二群:4049歲,則agegroup=2 第三群:5059歲,則agegroup=3 第四群:60歲以上,則agegroup=4,條件執行指令,條件控制:ifelse函數;if, else if 與 else 指令1:ifelse(condition, yes, no) 用於最簡單的二分類判斷狀況 通常用於簡單的變數計算。 指令2: if ( condition_1 ) expression_1 else if ( condition_2 ) expression_2 else if ( condition_3 ) expression_3 else expression_4,判斷式中的運算子,判斷式中的運算子,if() 或 while() 括弧內當使用&與|跟與| 是有差別的。 &與 | 代表and 與or:適用於單一真假值的判斷。 與 | 也代表and 與or:適用於向量式的真假值運算。 如果運算對象為數字或是數字變數,則兩種運算子沒有差異;但若運算對象是向量或多維度的陣列、data frame,就有明顯的區別,判斷式中的運算子,ifelse 用法,指令1:ifelse(condition, yes, no) 若x10 則 y=1, 若x=10 則 y=2 x=c(1,2,3,4,5),若x中的元素小於3,則z=x*y,否則 z=x*log(y),if 用法,只有if : if ( condition ) expression 如果判斷條件為真,則執行括弧後面的運算式 多於一個執行狀況時,使用:,if else 用法,指令2: if ( condition_1 ) expression_1 else if ( condition_2 ) expression_2 else if ( condition_3 ) expression_3 else expression_4 Note:if() 小括弧內的邏輯判斷式為一個 TRUE/FALSE的值,雖然也可以是一個由TRUE/FALSE組合而成的邏輯向量。但只要這個邏輯向量的第一個元素值為TRUE,則邏輯判斷式就算為真 如:,if else 容易產生的錯誤,不會產生錯誤的寫法:if else寫在同一列,if else 容易產生的錯誤,會產生誤判的寫法: (1) R誤認為第一列已經是一個完整且結束的單獨if運算式,所以 第二列的else會被認為缺乏if,故產生錯誤。 (2) R認為第二列已結束完整的if 運算式,所以第三列錯誤。,if else 容易產生的錯誤,建議寫法:在if, else if, 以及else之後都加上,並依照下列 格式撰寫 正確寫法: if ( condition_1 ) expression_1 else if ( condition_2 ) expression_2 else if ( condition_3 ) expression_3 else expression_4 如:,迴圈(Loop),迴圈:主要由 for 、 while 與 repeat 所構成 迴圈範圍中可以使用break跳出迴圈,或是使用next跳過剩下的敘述句,直接進入下一個迴圈。 R裡面可用向量或是矩陣運算函數取代迴圈的運算,執行速度會更快。,for 迴圈,指令1: for (迴圈變數in 範圍) 單一完整運算式 指令2: for (迴圈變數in 範圍) 一個或多個運算式 迴圈變數:通常使用i, j, k, l, m等英文字母 範圍:通常是一個數值向量,如:for (i in 1:10) 利用for 迴圈計算1+2+9+10,while 迴圈,指令: while (可繼續留在迴圈內的邏輯判斷式) 一個或多個運算式 利用while迴圈計算1+2+3+100,repeat 迴圈,指令: repeat 一個或多個運算式 if (離開迴圈的條件) break 其他可能的完整運算式 利用repeat迴圈計算1+2+3+100,break 與 next: 改變迴圈狀態,R迴圈內無論是使用for, while或是repeat,都可以藉由break與next來改變迴圈的狀態。 break:終止並跳離迴圈,通常是接在某個條件執行式之後。 範例:列印s內的會員姓名,但若遇到姓名為John的人跳離迴圈,break 與 next: 改變迴圈狀態,next:不終止整個迴圈結構的執行,但是next會忽略跳過目前這一次迴圈,剩下的其他運算式,直接跳到下一次迴圈。 範例:只加總1100中的單數,資料轉換(變更coding),將資料按照性別分成兩群,令新變數為sex_c 男生(原始資料記為1): sex_c=“male” 女生(原始資料記為0): sex_c=“female” 將資料按照年紀分成四群,另外令一個變數為agegroup 第一群:40歲以下,則agegroup=1 第二群:4049歲,則agegroup=2 第三群:5059歲,則agegroup=3 第四群:60歲以上,則agegroup=4,迴圈與控制指令,agegroup = rep(0,15) for (i in 1:15) if (agei=40)&(agei=50)&(agei60) agegroupi= 3 else agegroupi= 4 datanew = cbind(data,agegroup) # 將新變項agegroup與data結合 datanew,練習,計算BMI值: BMI體重(公斤)身高2(公尺2) 最健康的BMI值為22,若身體質量指數超過23為過重,超過27為肥胖,若超過35則為極度肥胖。 加一欄身高資料,將資料做combine,資料為: (170,176,154,144,160,140,150,161,166,155,141,143,150,172,150)cm 令一新的變數為BMI,計算每個人的BMI值。 若BMI35,令BMIindex=4,練習,利用while迴圈做1/x在x=1的泰勒展式: 若x=0.3,試求泰勒展式要加總到第幾項,才會跟實際值 1/0.33.3333 差距在0.00001以內。 使用(-1)(i%2)來控制每一項的正負交錯;%是在求餘數。,練習,利用repeat迴圈做1/(1-x)的泰勒展式: 若x=0.3,試求泰勒展式要加總到第幾項,才會跟實際值 1/(1-0.3)1.428571 差距在0.00001以內。,自訂函數,語法 自訂函數名稱function(變數1, 變數2, 變數3,)expression R軟體預設將函數內最後一個運算式當作回傳值。若要更改預設,可使用return() 將計算值回傳。 return() 函數傳回的值可包含R軟體的各種變數種類,如:向量、矩陣、但大多都採用list變數當作回傳值。因為list變數可包含不同長度、不同變數種類的元素,可回傳多個不同屬性的函數計算結果。,自訂函數,自訂函數,Ex1:,自訂函數,Ex2: Ex3:,自訂函數,眾數,自訂函數-練習,利用迴圈,寫出將任一向量加總的函數,特殊的函數用法,參數:將自訂函數裡面用到的其他function需要的參數傳入,常用函數,統計相關函數 sum(x) 向量x所有元素的總和 prod(x) 向量x所有元素相乘 max(x) 向量x所有元素最大的元素值 min(x) 向量x所有元素最小的元素值 range(x) 傳回x的全距 length(x) 計算向量x的元素個數 mean(x) 計算x所有元素的平均數 median(x) 計算x所有元素的中位數 var(x), cov(x) 計算x所有元素的樣本變異數 cor(x) 當x為data frame時,傳回x的相關矩陣 var(x, y) 與 cov(x,y) 計算x與y的共變異數(covariance)矩陣 cor(x,y) 計算x與y的相關係數或相關係數矩陣,常用函數,統計相關函數 rev(x) 將x所有元素反向呈現(未排序) sort(x) 將x內的元素從小到大排序 rev(sort(x) 將x內的元素從大到小排序 rank(x) 傳回x中各元素的排序順序值 choose(n,k) 計算二項式組合數 n!/(n-k)!k! factorial(x) 階乘函數,相當於prod(1:x),常用工具函數,處理NA (missing data)的函數 na.fail(x):若x包含missing values則傳回錯誤訊息,否則傳回x。 na.pass(x):保留x的NA值。 na.omit(x)與na.exclude(x):去除NA元素。,最大概似估計量(MLE),MLE: 利用package(stats4) 中的mle函數 Usage: mle(minuslogl, start, method) minuslogl:計算 -1*log

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论