命令行運(yùn)行R 腳本
使用 R CMD BATCH name.R 或者Rscript name.R 都能在終端運(yùn)行R 腳本烹玉。但前者會(huì)將文本結(jié)果輸出到name.Rout 的文件中,后者才會(huì)將結(jié)果重定向到終端上阐滩。
平臺(tái)交互
?R調(diào)用Matlab
加載R.matlab包 即可用readMat() 讀取mat 文件(mat文件的版本不得高于v6.0)
R 環(huán)境內(nèi)調(diào)用函數(shù)
do.call()
Day 11 | R Crash Course - 3.7
C1 R的使用
R語句由函數(shù)和賦值構(gòu)成二打,輸入?yún)^(qū)分大小寫。
R使用 <—作為賦值符號(hào)掂榔。不推薦用=賦值继效,因函數(shù)條件中用=時(shí)能取值運(yùn)算,但卻沒有賦值装获,# 是注釋符號(hào)瑞信;
# 基礎(chǔ)操作
設(shè)置默認(rèn)的鏡像:options(repos=structure(c(CRAN="YOUR FAVORITE MIRROR")))
http://mirrors.tuna.tsinghua.edu.cn/CRAN/
查看版本:version
安裝Bioc下載工具:> source("https://bioconductor.org/biocLite.R")? ? > biocLite() 安裝包
# Base function
c() 以向量形式賦值;
mean(), sd(), cor() 求數(shù)據(jù)的均值穴豫、標(biāo)準(zhǔn)差和相關(guān)度凡简;
plot() 作圖;
# Help function
help(foo) or ?foo 查看foo函數(shù)的幫助;
apropos("foo",mode="function")列出名稱含有foo的所有函數(shù)精肃;
vignette(“foo”)為主題foo顯示指定的vignette文檔秤涩;
# Workspace function
Workspace是當(dāng)前工作環(huán)境,存儲(chǔ)用戶定義的所有對(duì)象(向量司抱,矩陣筐眷,函數(shù),數(shù)據(jù)框状植,列表)
getwd(), setwd() 顯示和修改當(dāng)前工作目錄;
ls() 列出當(dāng)前對(duì)象怨喘; rm(objectlist) 刪除對(duì)象津畸;
options() 顯示或設(shè)置當(dāng)前選項(xiàng);
save.image("myfile") 保存工作空間到文件myfile(默認(rèn).RData);
save(objectlist,file="myfile") 保存指定對(duì)象到文件夾中必怜;
load("myfile")讀取工作空間到當(dāng)前會(huì)話中肉拓;
# 輸入和輸出
腳本執(zhí)行:source("filename")?執(zhí)行路徑中的腳本文件,路徑默認(rèn)當(dāng)前目錄梳庆;
文本輸出:sink("filename") 將輸出重定向到filename中暖途,默認(rèn)覆蓋原內(nèi)容卑惜;參數(shù)append=True可將文本追加到文件后;參數(shù)split=True可將輸出同時(shí)發(fā)送至屏幕和輸出文件驻售。無參數(shù)sink() 僅項(xiàng)屏幕返回結(jié)果露久;
圖形輸出:bmp("filename")、jpeg("filename")欺栗、pdf("filename")毫痕、png("filename")、postscript("filename")迟几、svg("filename")消请、wim.metafile("filename")
最后可使用dev.off() 將圖形輸出返回到終端;
# 包(Package)
(.packages())类腮、search()已加載的包remove.packages("packages_name",?lib="lib_path") 刪除包
packageVersion("package_name")查看版本
.libPaths() 顯示庫所在位置? ? library() 顯示庫中的包? ??
install.packages()臊泰、BiocManager::install("pkg_name") 下載安轉(zhuǎn)包? ? update.packages() 更新包? ? installed.packages() 列出已安裝包的信息
library() 加載包
函數(shù)名重疊時(shí),R將優(yōu)先調(diào)用最后載入的程序包蚜枢。若想執(zhí)行被屏蔽的函數(shù)缸逃,鍵入?包名::函數(shù)名(mt)?,如:Hmisc::describe(mt)
# 查看重復(fù)的函數(shù)名
library(dplyr)
envs <- search() %>% setNames(., .)
fns <- lapply(envs, ls)
fns_by_env <- data_frame( env = rep.int(names(fns), lengths(fns)), fn = unlist(fns))
fns_by_env %>% group_by(fn) %>% tally() %>% filter(n > 1) %>% inner_join(fns_by_env)
# 查看包中的函數(shù)
1祟偷、help(package="package_name") 直接查看包的簡(jiǎn)介
2察滑、methods(Fun_name) 可以查看一類的函數(shù)(因?yàn)楣δ芟嘟庋b到一起)這類函數(shù)一般都有一個(gè)Fun_name.default?泛型函數(shù)
3、▲getAnywhere(Obj_name) 可以找到各種函數(shù)
# 環(huán)境空間(進(jìn)階topic)
引用自R的極客理想系列文章 | 解密R語言函數(shù)的環(huán)境空間
R 的變量修肠、對(duì)象贺辰、函數(shù)都存于環(huán)境空間中,函數(shù)又可以有自己的環(huán)境空間嵌施,所以可以在函數(shù)內(nèi)定義變量饲化、對(duì)象和函數(shù),這樣就形成了R的環(huán)境系統(tǒng)吗伤。
環(huán)境空間可以通過?new.env()?創(chuàng)建吃靠,更多使用的是函數(shù)環(huán)境空間,其包括4方面的內(nèi)容:
1足淆、封閉環(huán)境:定義函數(shù)時(shí)指向的一個(gè)獨(dú)有環(huán)境????2巢块、綁定環(huán)境:將函數(shù)綁定到指定名稱的函數(shù)變量,fun1 <—?function(){1}????3巧号、運(yùn)行環(huán)境:函數(shù)運(yùn)行時(shí)在內(nèi)存中產(chǎn)生的動(dòng)態(tài)環(huán)境空間族奢,結(jié)束后即銷毀????4、調(diào)用環(huán)境:如 function(){fun2()}
例:?
究極版全圖
相關(guān)函數(shù)
research() 返回R查找變量索引的環(huán)境空間順序? ? environment(fun_name) 返回函數(shù)的環(huán)境空間? ? exists("obj_name", envir=env_name, inherits=F) 查找對(duì)象是否在環(huán)境空間
# 程序常見錯(cuò)誤 ▲
1丹鸿、沒有注意大小寫? ? 2越走、沒有注意引號(hào)? ? 3、函數(shù)調(diào)用是沒加括號(hào)? ? 4、路徑使用"\\"或“/”廊敌,而不是"\"? ? 5铜跑、使用已安裝但尚未載入的包
# 批處理
批處理模式能重復(fù)、無人值守地執(zhí)行程序
對(duì)于RLinux或Mac系統(tǒng)骡澈,可在終端輸入:R CMD BATCH?options infile outfile
對(duì)于windows锅纺,需使用:>“chelp.s:\Program Files\R\R-3.1.0\bin\R.exe” CMD BATCH? ? > --vanilla --slave? "c:\my project\myscript.R"
C2 數(shù)據(jù)結(jié)構(gòu)
2.1 數(shù)據(jù)結(jié)構(gòu)
R的數(shù)據(jù)類型有標(biāo)量、向量秧廉、矩陣伞广、數(shù)組、數(shù)據(jù)框和列表疼电。
R能處理的數(shù)據(jù)類型有數(shù)值嚼锄、字符、邏輯蔽豺、復(fù)數(shù)和字節(jié)区丑。名義型和有序型變量在R中被稱為因子。
# 向量
向量只能存儲(chǔ)數(shù)值修陡、字符或者邏輯型數(shù)據(jù)沧侥,且單個(gè)向量中的數(shù)據(jù)要有相同的類型。組合功能函數(shù)c()用于創(chuàng)建向量魄鸦。
而向量元素的位置用 ‘[ ]’來定位宴杀。e.g.a[3], a[c(1,3)], a[2:6]都可行
# 矩陣
矩陣是一個(gè)二維數(shù)組,每個(gè)元素都有相同的類型(數(shù)值拾因、字符或邏輯)旺罢。創(chuàng)建矩陣的一般格式為:mymatrix?<— matrix(vector,? nrow, ncol, byrow=FALSE,?dimname=list(char_vector_rownames, char_vector_colnames)),一般情況下绢记,默認(rèn)按列填充扁达。
# 數(shù)組
矩陣可通過?myarray?<— array(vector, dimensions, dimnames)創(chuàng)建,dimnames是可選的各維度名稱標(biāo)簽列表蠢熄。
# 數(shù)據(jù)框
數(shù)據(jù)框中不同的列可以用不同的數(shù)據(jù)類型跪解,常用?mydata?<— data.frame(col1, col2, col3, ..., row.names=case_identifier_name),實(shí)例標(biāo)識(shí)符(case_identifier)用于指定各類實(shí)例的名稱签孔。
選取數(shù)據(jù)框中的元素可用 '$' 完成叉讥,也可用函數(shù)?attach()、with()簡(jiǎn)化書寫饥追。
e.g.1 >plot(mtcars$mpg, mtcars$disp)
e.g.2 >attach(mtcars)? >plot(mpg, disp)?>detach(mtcars) --attach() 將數(shù)據(jù)框添加到R的搜索路徑中图仓,R遇到變量名時(shí)會(huì)檢查搜索路徑中的數(shù)據(jù)框。適用于分析單一數(shù)據(jù)框且無同名對(duì)象的情況判耕。注意養(yǎng)成調(diào)用完用detach() 從路徑中移除的習(xí)慣透绩。
e.g.3 >with(mtcars, {>stats <- summary(mpg)? >stats})
with() 中有多條語句需用 ‘{ }’包起來翘骂,而且語句中的賦值只生效于括號(hào)內(nèi)壁熄,若要在括號(hào)外也生效,則要用特殊賦值符 '<<—' 替代普通賦值符 '<—'。通常來說慰安,with()比attach()更好用轰绵。
# 因子
函數(shù)factor() 以整數(shù)向量存儲(chǔ)類別值。對(duì)于名義型變量:
e.g. >diabetes?<— c("Type1", "Type2")? ? >diabetes?<— factor(diabetes)
對(duì)于有序變量昌执,函數(shù)按默認(rèn)字母順序排序烛亦,這一般不準(zhǔn)確,需要指定?“l(fā)evels”選項(xiàng)排序:
e.g.>status?<— c("Poor", "Improved", "Excellent")? ? >?status>— factor(status,?order=TRUE, levels=c("Poor", "Improved", "Excellent")
str(object)可提供對(duì)象的結(jié)構(gòu)懂拾; summary()顯示各變量的統(tǒng)計(jì)信息煤禽。
*# 列表
列表是一些對(duì)象的有序組合,可用 list() 創(chuàng)建:
e.g. >?mylist <—list(object1, object2, ...)? ? >?mylist <—?list(name1=object1, name2=object2, ...)
list的調(diào)用待理
* 關(guān)于list[[ ]] 與 list[[ ]]的問題
number of items to replace is not a multiple of replacement length
# R的一些特性 ▲
1岖赋、對(duì)象名稱中的?'.'沒有特殊含義檬果,‘$' 卻有其他語言中句點(diǎn)的含義,指示數(shù)據(jù)框或列表中的某些成分唐断; 2选脊、R不提供注釋塊的功能,要么逐行#脸甘,要么用 if(FALSE){...}注釋恳啥;? 3、賦值給不存在元素時(shí)丹诀,R會(huì)自動(dòng)擴(kuò)展數(shù)據(jù)結(jié)構(gòu)钝的;? 4、R中沒有標(biāo)量忿墅,以單元素向量出現(xiàn)扁藕;? 5、R的下標(biāo)從?‘1’開始疚脐;? 6亿柑、R無法聲明變量,只在首次賦值時(shí)生成棍弄。
2.2 數(shù)據(jù)輸入
可供R導(dǎo)入的數(shù)據(jù)源:
1望薄、統(tǒng)計(jì)軟件:SAS SPSS Stata? ? 2、文本文件:ASCII XML Web抓取? ? 3呼畸、數(shù)據(jù)庫:SQL MySQL Oracle Access? ? 4痕支、其他:Excel netCFD HDF5
# 小數(shù)據(jù)導(dǎo)入(鍵盤輸入)
1、創(chuàng)建數(shù)據(jù)框蛮原,然后用文本編輯器輸入:
e.g.>?mydata <—?data.frame(age=numeric(0),?gender=character(0))? ? >?mydata <—edit(mydata)
最后一步一定要賦回對(duì)象本身卧须,因?yàn)榫幾g器只在副本編輯,關(guān)閉后不會(huì)保存!
2花嘶、直接在程序中嵌入數(shù)據(jù)集:
e.g. >?mydatatxt <—?”\n age gender\n 25 m\n30 f\n..."? ? >?mydata <—?read.table(header=TRUE, text=mydatatxt)
# 數(shù)據(jù)集標(biāo)注
R 處理變量標(biāo)簽的能力有限笋籽,一種方法是將變量標(biāo)簽作為變量名。e.g. > names(data)[2] <— "label_name"
值標(biāo)簽可用 factor()為類別型變量創(chuàng)建椭员,levels代表變量實(shí)際值车海,labels代表值標(biāo)簽。 e.g. >?data$variable <—?factor(data$variable, levels=c(origin_value), labels=c(label_value))
# 對(duì)象的實(shí)用函數(shù)
length() 對(duì)象中元素/變量的數(shù)量? ? dim() 維度? ? str()?結(jié)構(gòu)class()?類型mode() 對(duì)象的數(shù)據(jù)類型names() 各成分名稱? ? ?c(object,?object,..) 合并向量隘击,會(huì)自動(dòng)統(tǒng)一數(shù)據(jù)類型cbind() 按列合并? ? rbind()? ? head() 顯示前六行? ? tail() 顯示后六行? ? rm() (rm(list=ls())可以刪除除 ’.‘開頭的所有對(duì)象)newobject?<— edit(object)侍芝、fix(object) 編輯對(duì)象
C3 初階圖形
通過在開啟圖形設(shè)備和關(guān)閉圖形設(shè)備語句之間放入繪圖語句即可保存相關(guān)類型的圖形。另埋同,創(chuàng)建多窗口圖形需要打開多個(gè)圖形窗口州叠,命令集如下:
dev.new() 創(chuàng)建新窗口? ?dev.next()窗口切換? ? dev.prev()? ? dev.cur() 當(dāng)前窗口序號(hào)? ?dev.off() 關(guān)閉當(dāng)前窗口? ?dev.set() 窗口跳轉(zhuǎn)? ?graphics.off() 關(guān)閉所有窗口
# 圖形參數(shù)
--lty(1-6) 線類型? --pch(1-25) 點(diǎn)類型? --cex 點(diǎn)大小? --lwd 線寬? --type("p", "l", "b", "h", "s", "S")??
可用par() 來設(shè)定參數(shù)再繪圖(設(shè)置所有繪圖), 也可以直接在plot() 里添加屬性(設(shè)置單一繪圖)凶赁。用par()之前一般先用?opar <— par(no.readonly=TRUE)?保存默認(rèn)設(shè)置留量。
# 顏色plot(dose, dt
rainbow()? heat.colors()? terrain.colors9)? topo.colors()? ?cm.colors()? RColorBrewer()? ?gray()
# 文本屬性
-cex 默認(rèn)大小倍數(shù)? ? -cex.axis 刻度文字大小? ? -cex.lab? ? -cex.sub? ? -cex.main? ? -font 字體樣式(1-5)? ? -family 字體族? ? -windowsFont() Windows中的字體映射
# 圖形尺寸
--pin() 以英寸表示的圖形尺寸(寬和高)? ? --mai() 英寸單位的邊界(下、左哟冬、上楼熄、右)? ? --mar() 英分單位的邊界,默認(rèn)?c(5,4,4,2)+0.1
*# 基礎(chǔ)函數(shù)
line()?添加圖形title() 添加標(biāo)題
text(-location?位置浩峡,為x,y坐標(biāo)? -"text"? -pos?方位可岂,1下左上右,可加offset偏移量 )?添加文本
mtext(-"text"? -side 放置文本的邊? -line 負(fù)內(nèi)正外移動(dòng)文本)?在邊界添加文本
axis(-side(1下2左3上4右)? -at 數(shù)值向量翰灾,刻度線位置? -las 標(biāo)簽0平行或2垂直坐標(biāo)軸? -tck 刻度線長(zhǎng)度缕粹,負(fù)值圖外,正值圖內(nèi)纸淮,1繪制網(wǎng)絡(luò)線平斩,默認(rèn)?-0.01, -ylim 刻度范圍)添加坐標(biāo)軸? ??
abline(h=yvalues, v=xvalues)?添加參考線
minor.tick(-nx x刻度劃分?jǐn)?shù) -ny -tick.ratio 刻度線大小比例)?添加次要刻度線(需要導(dǎo)入Hmisc庫)
legend(location,?title, legendset)?添加圖例
*某些高級(jí)繪圖默認(rèn)包含標(biāo)題、標(biāo)簽和坐標(biāo)咽块,可用?ann=FALSE?移除標(biāo)題和標(biāo)簽绘面;用?axes=FALSE?移除坐標(biāo)軸(刻度、坐標(biāo)侈沪、以及框架線)揭璃,用?yaxt="n"?移除坐標(biāo)軸的刻度。
# 多圖組合
par(-mfrow=c(nrows, ncols)?按行填充? -mfcol 按列填充)
或 layout(mat,?widths,?heights) 定義多圖布局
e.g. layout(matrix(c(1,1,2,3), 2, 2, byrow=TRUE), widths=c(3, 1), heights=c(1, 2))? 劃分了按行排列亭罪,圖一位于一行瘦馍,圖二三位于二行且列寬為3:1,行高為1:2的圖組
# 布局微調(diào)
可用par(fig=c(x1, x2, y1, y2)) 來具體設(shè)定子圖的空間位置应役,繪圖區(qū)域右左下角(0情组,0)到右上角(1燥筷,1)的區(qū)域可用。
同時(shí)院崇,-fig 參數(shù)默認(rèn)新建一幅圖像荆责,所以添加圖前先設(shè)定 par(new=TRUE)
C4 數(shù)據(jù)處理
# 添加新變量
_data_ <— transform(_data_, argu=value)?添加新變量
算術(shù)運(yùn)算符: x^y、x**y 求冪? ? x%%y 求余? ? x%/%y 整數(shù)除法
邏輯運(yùn)算符: x==y?嚴(yán)格等于亚脆,浮點(diǎn)數(shù)比較時(shí)慎用? ? isTRUE(x)
# 變量重編碼
within() 與with() 類似,不同的是盲泛,within()能修改數(shù)據(jù)框濒持。
語句 variable[condition] <— expression 能按條件執(zhí)行賦值
重編碼函數(shù)有 car包的recode()、doBy包的recodevar()
# 變量的重命名
fix(_data_) 編輯數(shù)據(jù)? ? names(_data_) 賦值方法重命名? ? plyr包的rename() 函數(shù)
e.g. _data_?<— rename(_data_, c(oldname="newname", ...))
# 缺失值
缺失值為NA (Not Available) 寺滚,與SAS等不同柑营,R數(shù)值型和字符型的缺失都為NA,可用 is.na()判別村视,將返回同等大小邏輯對(duì)象官套。要注意兩點(diǎn):
1、NA不可比較蚁孔,value == NA 不能識(shí)別NA奶赔,只能用函數(shù)識(shí)別。
2杠氢、R中無限和不可能出現(xiàn)的數(shù)值不會(huì)被標(biāo)記為NA站刑,他們對(duì)應(yīng)的是Inf、-Inf(如5/0)和NAN(not a number, 如sin(Inf))鼻百。分別可用is.infinite()和 is.nan()識(shí)別绞旅。
含缺失值的計(jì)算結(jié)果也是缺失值。分析前需排除缺失值温艇,一般數(shù)值函數(shù)都有?na.rm=TRUE?選項(xiàng)刪除缺失值因悲,以使用剩余值計(jì)算。 另也可以用 na.omit()刪除缺失數(shù)據(jù)的行勺爱。
# 日期值
日期值是R 中的一種數(shù)據(jù)格式晃琳。as.Date(date,?"input_format") 用于將字符串日期值轉(zhuǎn)化為日期變量,格式有 %d, %a, %A, %m, %b, %B, %y, %Y琐鲁。日期的默認(rèn)格式是%Y-%m-%d 蝎土。
指定格式的日期可以用 format(_data_,?format="output_format")獲得。
此外绣否,日期變量的有關(guān)函數(shù)還有Sys.Date() 當(dāng)天日期誊涯, date() 當(dāng)前日期時(shí)間,difftime() 時(shí)間差蒜撮。
最后暴构,日期變量也能通過 as.character(_data_)轉(zhuǎn)化為字符型變量跪呈。
# 數(shù)據(jù)排序
order() 對(duì)排序變量排序后輸出一個(gè)排序向量。
e.g. order(-_data_) 按倒序排序取逾。
# 數(shù)據(jù)集的合并
merge(dataframeA, dataframeB,?by="ID") 按照內(nèi)聯(lián)結(jié)ID 進(jìn)行列合并? ? cbind(A, B) 直接合并列
rbind(A, B) 直接合并行耗绿,要有相同的變量,否則要1砾隅、刪除A 的多余變量 或 2误阻、給B 追加缺失值
# 剔除變量
e.g. >?_index_?<— names(_data_) %in% c(_rm_list_)? ? > newdata <— _data_[!_index_]
e.g. > newdata <— _data_[c(-c1, -c2,...)] 行列下標(biāo)為負(fù)數(shù)意味著剔除
e.g. > _data_$v1 <- NULL? NULL是未定義,相當(dāng)于刪除變量
# 選取子集
newdata <— subset(_data_, condition, select=c(v1, v2, ...))
# 采樣
mysample <— _data_[sample(1:nrow(_data_),?_sampling_num_, replacement=FALSE) 有放回采樣
C5 高級(jí)數(shù)據(jù)管理
5.1 數(shù)字字符函數(shù)
# 數(shù)學(xué)函數(shù)
ceiling(x) 大于x的最小整數(shù)? ? floor(x) 小于x的最大整數(shù)? ? trunc(x) 向0方向截取整數(shù)部分? ? round(x, digits=n) 指定小數(shù)位? ? signif(x, digits=n) 指定有效數(shù)位? ? log(x, base=n)? ? log10(x)
sd(x) 標(biāo)準(zhǔn)差? ? var(x) 方差? ? mad(x) 絕對(duì)中位差? ? quantile(x, probs) 求probs之間的分位點(diǎn)? ? diff(x, lag=n) 滯后n項(xiàng)的差分? ? scale(x, center=TRUE, scale=TRUE) 按列進(jìn)行中心化或者標(biāo)準(zhǔn)化
▲# 概率函數(shù)
[dpqr]_distribution_abbreviation()
d(density) = 密度函數(shù)? ? p(distribution) = 分布函數(shù)? ? q(quantile) = 分位數(shù)函數(shù)? ? r(random) = 生成水技術(shù)
distribution_abbreviation:
beta -Beta分布? ? binom -二項(xiàng)分布? ? cauchy -柯西分布? ? chisq -卡方分布? ? exp -指數(shù)分布? ? f -F分布? ? gamma -伽馬分布? ? geom -幾何分布? ? hyper -超幾何分布? ? lnorm -對(duì)數(shù)正態(tài)分布? ? logis -Logistic分布? ? multinom -多項(xiàng)分布? ? nbinom -負(fù)二項(xiàng)分布? ? norm 正態(tài)分布? ? pois -泊松分布? ? signrank -Wilcoxon符號(hào)秩分布? ? t -t分布? ? unif -均勻分布? ? weibull -Weibull分布? ? wilcox -Wilcoxon秩和分布
# 隨機(jī)種子
每次生成隨機(jī)數(shù)會(huì)有一個(gè)不同的種子晴埂,以產(chǎn)生不同的結(jié)果究反。可以用set.seed() 指定種子儒洛,以創(chuàng)建可共享的示例精耐。
# 生成多元正態(tài)數(shù)據(jù)
MASS包的 mvrnorm() 函數(shù),mvrnorm(n, mean, sigma)
*▲# 字符處理函數(shù)
nchar(x)? ? substr(x, start, stop)? ??
grep(pattern,?x, ignore.case=FALSE, fixed=FALSE)?-fixed=FALSE琅锻,則?pattern為一正則表達(dá)式卦停,否則為一文本字串符;另注意恼蓬,需要用到反斜杠"\"的正則表達(dá)式(如"\s"表示空格符)寫法應(yīng)為"\\s"惊完,因?yàn)?\"為 R的轉(zhuǎn)義字符
sub(pattern, replacement,?x, ignore.case=FALSE, fixed=FALSE) 提取或替換字符向量的字串
strsplit(x,?split,?fixed=FALSE) 在split處分割字符串
paste(x1, x2,?seq=" ") 連接字符串,分隔符為seq
toupper(x) 大寫轉(zhuǎn)換? ? tolower(x)
# 其他處理函數(shù)
length() 求對(duì)象中的元素?cái)?shù)量? ? seq(from, to, by) 生成一個(gè)等間隔的序列? ? ?rep(x, n) 重復(fù)?x?n次 ? ?cut(x,?breaks, labels=NULL, orderd_result=F) 若break 為數(shù)字处硬,將連續(xù)型向量x?等間隔地(左開右閉)分割為 n個(gè)水平因子专执;若break 為向量, 則以該元素為分割點(diǎn)分割? ? pretty(x,?n) 將?x等分為n個(gè)等間距區(qū)間? ? cat(..., file="_filename", append=F) 連接對(duì)象(自動(dòng)以空格間隔)并輸出到屏幕或者文件中
table(var1, var2, ...) 使用N個(gè)類別型變量創(chuàng)建一個(gè)N維列聯(lián)表
# 矩陣函數(shù)
apply(x,?MARGIN, FUN) 按區(qū)域運(yùn)行函數(shù)
5.2 語法結(jié)構(gòu)
循環(huán)
for (var in seq)?statement?while (cond)?statement? ? ? ??
條件
if (cond)?statement1?else?statement2
ifelse(cond,?state,ent1, statement2)
switch(expr, ...)
e.g. >feelings <— c("sad", "afraid")? ?> for (i in feelings) print(switch(i , happy="I am glad",...))
函數(shù)
function_name?<— function(arg1, arg2, ...) { statement; return(obj) }
▲調(diào)用自編寫函數(shù)時(shí)郁油,用?source("function_name")載入
# 整合與重構(gòu)(reshape2包)
t() 倒置
*aggregate(data, by=list(name1=var1, name2=var2,...,), FUN) 整合數(shù)據(jù)本股,但其函數(shù)只能調(diào)用單返回值的函數(shù)? ? by(data, group, FUN) 則可以調(diào)用任何函數(shù)? ? ?doBy包的summaryBy(formula, data=dataframe, FUN)也能分組計(jì)算概述統(tǒng)計(jì)量
melt() 數(shù)據(jù)分解? ? dcast() 重構(gòu)? ??
C6 基本圖形
# 條形圖
barplot(height, horiz=F, besides=F)? ? plot() 也可以根據(jù)因子變量快速創(chuàng)建一個(gè)條形圖? ? spine()? ? pie()? ? ?pie3D()? ? Plotrix包fan.plot()? ? hist()? ? rug()? ? density()? ? sm包 sm.density.compare(x, factor) 疊加核密度圖
boxplot(formula,?data=dataframe, notch= ,) -?formula?項(xiàng)有y~A、y~A*B 兩種寫法桐腌,表示類別變量A對(duì)于數(shù)值變量y生成的箱型圖拄显。盒型范圍±1.5IQR以外的值以離群點(diǎn)表示
vioplot(x1, x2, ...,?names, col) 小提琴圖? ? dotchart(x,?labels, groups) 按標(biāo)簽畫散點(diǎn)圖,且標(biāo)簽按groups?變量進(jìn)行分組
C7 基本統(tǒng)計(jì)分析
# 描述性統(tǒng)計(jì)分析
discribe() 返回?cái)?shù)據(jù)整體的基本信息(樣本案站、特征數(shù)量躬审,缺失值、不同值等等)蟆盐,類似的函數(shù)還有pastecs 包的stat.desc() 和psych 包的describe()? ??
# 頻數(shù)表和列聯(lián)表
table(var1, var2,...) 根據(jù)因子創(chuàng)建列聯(lián)表承边,默認(rèn)忽略缺失值? ? xtabs(formula, data) 根據(jù)公式(-formula: y~A+B,y以AB的交叉分類統(tǒng)計(jì)頻數(shù))創(chuàng)建N維列聯(lián)表? ? prop.table(table, margins) 依邊際將列表表示為分?jǐn)?shù)形式? ? margin.table(table, margins) 依邊際計(jì)算列表?xiàng)l目和? ? addmargins(table, margins) 給列表添加邊際和? ? ftable(table) 創(chuàng)建平鋪式列聯(lián)表
gmodels 包的CrossTable() 創(chuàng)建多選項(xiàng)的二維列聯(lián)表? ??
# 獨(dú)立性檢驗(yàn)
chisq.test(mytable) 卡方獨(dú)立性檢驗(yàn)石挂,表格需為二維表? ? fisher.test() 原假設(shè)行和列是相互獨(dú)立的博助,需用于行列數(shù)≥2的二維表(但不能是2×2)? ? mantelhaen.test() 原假設(shè)兩個(gè)名義變量在第三個(gè)變量的每一層中是條件獨(dú)立的
# 相關(guān)性度量
vcd包的assocstats() 計(jì)算phi系數(shù)、列聯(lián)系數(shù)和Cramer's V系數(shù)? ??
cor(x,?use=everything, method=pearson) use指定缺失數(shù)據(jù)的處理方式痹愚,method 可選pearson富岳、spearman蛔糯、kendall? ? ggm包的pcor(u, Cov(var)) 計(jì)算u指定前兩個(gè)變量的偏相關(guān)系數(shù)
cor.test(x, y, alternative=, method=) 相關(guān)性的顯著性檢測(cè),-alternative(原假設(shè)two.side總相關(guān)系數(shù)不為0窖式,greater 總相關(guān)系數(shù)大于0蚁飒,lesser 總相關(guān)系數(shù)小于0),cor.test() 一次只能檢驗(yàn)一種相關(guān)關(guān)系萝喘,而psych 包的corr.test()可以一次檢驗(yàn)多個(gè)相關(guān)關(guān)系
pcor.test(r, q, n) 偏相關(guān)系數(shù)的顯著性檢測(cè)
*# t檢驗(yàn)
t.test(y~x,?data, var.equal=F, alternative=)?
含參的t檢驗(yàn)與非參數(shù)檢驗(yàn)
C8 回歸