The R

命令行運(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 回歸

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末淮逻,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子阁簸,更是在濱河造成了極大的恐慌爬早,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,682評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件强窖,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡削祈,警方通過查閱死者的電腦和手機(jī)翅溺,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來髓抑,“玉大人咙崎,你說我怎么就攤上這事《峙模” “怎么了褪猛?”我有些...
    開封第一講書人閱讀 165,083評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)羹饰。 經(jīng)常有香客問我伊滋,道長(zhǎng),這世上最難降的妖魔是什么队秩? 我笑而不...
    開封第一講書人閱讀 58,763評(píng)論 1 295
  • 正文 為了忘掉前任笑旺,我火速辦了婚禮,結(jié)果婚禮上馍资,老公的妹妹穿的比我還像新娘筒主。我一直安慰自己,他們只是感情好鸟蟹,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,785評(píng)論 6 392
  • 文/花漫 我一把揭開白布乌妙。 她就那樣靜靜地躺著,像睡著了一般建钥。 火紅的嫁衣襯著肌膚如雪藤韵。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,624評(píng)論 1 305
  • 那天熊经,我揣著相機(jī)與錄音荠察,去河邊找鬼置蜀。 笑死,一個(gè)胖子當(dāng)著我的面吹牛悉盆,可吹牛的內(nèi)容都是我干的盯荤。 我是一名探鬼主播,決...
    沈念sama閱讀 40,358評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼焕盟,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼秋秤!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起脚翘,我...
    開封第一講書人閱讀 39,261評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤灼卢,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后来农,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體鞋真,經(jīng)...
    沈念sama閱讀 45,722評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年沃于,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了涩咖。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,030評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡繁莹,死狀恐怖檩互,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情咨演,我是刑警寧澤闸昨,帶...
    沈念sama閱讀 35,737評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站薄风,受9級(jí)特大地震影響饵较,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜遭赂,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,360評(píng)論 3 330
  • 文/蒙蒙 一告抄、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧嵌牺,春花似錦打洼、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至僻弹,卻和暖如春阿浓,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背蹋绽。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評(píng)論 1 270
  • 我被黑心中介騙來泰國(guó)打工芭毙, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留筋蓖,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,237評(píng)論 3 371
  • 正文 我出身青樓退敦,卻偏偏與公主長(zhǎng)得像粘咖,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子侈百,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,976評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容