久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

150分鐘學(xué)會(huì)R語(yǔ)言與R常見(jiàn)問(wèn)題解答

 湖北劉恒 2017-10-25 發(fā)布于湖北




序:
這篇文檔內(nèi)容的來(lái)源多樣,既有來(lái)自于 R官方文檔(包括 R intro,,R data,,R admin),也有來(lái)
自于互聯(lián)網(wǎng)的 contributed documents,;還有若干來(lái)自于 Capital Of Statistics 論壇的討論問(wèn)題,。
本文檔的目的是為具有一定統(tǒng)計(jì)(數(shù)學(xué))背景的 R 軟件初學(xué)者提供一個(gè)快速認(rèn)識(shí) R 軟件的平
臺(tái),如果你無(wú)此背景,,可能會(huì)對(duì)其中的若干表達(dá)存在疑問(wèn),。這篇文檔重點(diǎn)不在統(tǒng)計(jì)方法上,因此所
列問(wèn)題不可能詳盡到統(tǒng)計(jì)學(xué)的每個(gè)知識(shí)點(diǎn),。
R 是一個(gè)很龐大的體系,,在 CRAN 的 Task Views 上可以清楚地看到貝葉斯推斷、聚類(lèi)分析,、
機(jī)器學(xué)習(xí),、空間統(tǒng)計(jì)、穩(wěn)健統(tǒng)計(jì)等方法的介紹。而這些方法又通過(guò)相應(yīng)的 R Packages 擴(kuò)展,,可以說(shuō)
學(xué)習(xí) R 是一件沒(méi)有盡頭的事情,。
如果你的英文閱讀沒(méi)問(wèn)題,那么精讀一本關(guān)于 R 的原版書(shū)籍也是一個(gè)不錯(cuò)的選擇,,但這個(gè)開(kāi)
頭常常讓人很頭痛,。希望這份 37 頁(yè)的文檔,對(duì)你認(rèn)識(shí),、學(xué)習(xí) R 是個(gè)不錯(cuò)的幫助,。
劉思喆1
June 25, 2008
致謝:
abel,cran,rtist,Xie Yihui,zhangv . . .
1sunbjtgmail.com
§A 前言
1. R 是做什么的?
R是一個(gè)有著統(tǒng)計(jì)分析功能及強(qiáng)大作圖功能的軟件系統(tǒng),,是由奧克蘭大學(xué)統(tǒng)計(jì)學(xué)系的 Ross Ihaka和
Robert Gentleman共同創(chuàng)立,。由于 R受 Becker, Chambers & Wilks創(chuàng)立的 S和 Sussman的 Scheme
兩種語(yǔ)言的影響,所以 R 看起來(lái)和 S 語(yǔ)言非常相似,。
2. 在哪里可以下載 R 的安裝程序
在 R 的官方網(wǎng)址上,,選擇網(wǎng)站鏡像 http://cran./mirrors.html,比如 UC
Berkeley下載軟件副本,。R擁有在 Linux,,MacOS X,Windows平臺(tái)下的各個(gè)版本,,如果是Windows
用戶,,進(jìn)入鏡像網(wǎng)站,選擇 Windows (95 and later) ,,進(jìn)入 base,,下載 R-x.x.x-win32.exe,。
3. 為什么 R 叫做 R
部分是因?yàn)閮晌?R 的作者 (Robert Gentleman 和 Ross Ihaka) 的姓名,,部分是受到了貝爾實(shí)驗(yàn)室 S
語(yǔ)言的影響(稱(chēng)其為 S 語(yǔ)言的方言)。
4. CRAN 是什么意思,?
CRAN 是 Comprehensive R Archive N etwork 的簡(jiǎn)寫(xiě),,是擁有同一資料,包括 R 的發(fā)布版本,,包,,
文檔和源代碼的網(wǎng)絡(luò)集合。
5. 我是新手,,我如何開(kāi)始學(xué)習(xí) R
R的官方網(wǎng)頁(yè)擁有大量英文學(xué)習(xí)資源,,還可以參考 http://cran./other-docs.
html 上的中文翻譯文檔。統(tǒng)計(jì)之都 bbs 是一個(gè)不錯(cuò)的學(xué)習(xí) R 的中文網(wǎng)站,,這個(gè)論壇上你可以找到
大量學(xué)習(xí)資料或直接提出問(wèn)題同大家探討,。
6. 初學(xué)者閱讀 R 自行安裝的 R-intro 就可以了么?
R-intro 確實(shí)是官方文檔中最基礎(chǔ)的,但它不是從 R 軟件應(yīng)用角度講的,,故并不適合于 R 初學(xué)者,。
可以參考 R-intro 中數(shù)據(jù)類(lèi)型、結(jié)構(gòu)部分,,作為基礎(chǔ)學(xué)習(xí),。
7. 能列舉一些 R 的經(jīng)典書(shū)目么?
正如大家應(yīng)用 R 的過(guò)程中看到,,大部分經(jīng)典的 R 書(shū)籍都為英文:
Modern Applied Statistics with S(Venables and Ripley)
The New S Language: A Programming Environment for Data Analysis and Graphics
—(Richard A. Becker,,John M. Chambers,Allan R.Wilks)
A Handbook of Statistical Analysis Using R(Brian S. Everitt,,Torsten Hothorn)
Data Analysis and Graphics using R(Maindonald and Braun)
Introductory Statistics with R(Dalgaard)
8. R 需要編程么,?
2
不!大多數(shù)時(shí)候不需要,,因?yàn)?R 有很多函數(shù)和包,,而且每天都在增加,你用的一般方法和函數(shù)都可
以在 R 自帶包中找到,。
9. 能否簡(jiǎn)單舉一個(gè) R 的例子,?
生成 100 個(gè)高斯(正態(tài))分布隨機(jī)數(shù),并對(duì)這 100 個(gè)數(shù)進(jìn)行特征描述,。
1 x mean(x )
3 sd (x )
summary(x )
當(dāng)然你還可以使用 demo()函數(shù),,比如 R 漂亮的圖形演示:
demo( graph i c s )
10. R 需要注冊(cè)費(fèi)用么?
不需要,!R 是一款在 GNU General Public License (GPL) 下發(fā)布的開(kāi)源軟件,,只是很少一部分包不
能用于商業(yè)用途。不知道為什么有些費(fèi)時(shí),、費(fèi)力且價(jià)格不菲的商業(yè)統(tǒng)計(jì)軟件,,居然還在生存?
11. 為什么 R 不能使用超過(guò) 50% 的 CPU,?
這是 Windows 下任務(wù)管理器的誤導(dǎo),,它將多個(gè) CPU 看作是單個(gè) CPU,同時(shí)計(jì)算使用比例,。而 R
是單線程計(jì)算軟件,,它不能同時(shí)使用 2 個(gè)以上的 CPU。當(dāng)你的計(jì)算機(jī)應(yīng)用的是雙核技術(shù),,你會(huì)發(fā)
現(xiàn) CPU 應(yīng)用會(huì)定格在 50% 上,。
12. 如何在發(fā)行出版物里引用 R
如果你是 LATEX 用戶,可以在 R 中使用命令 citation() 得到可供 BibTEX 使用的內(nèi)容,;或者是某一
個(gè)包的引用
1 c i t a t i o n ( package = ’package’)
§B 基礎(chǔ)知識(shí)
13. 如何獲得幫助,?
R 的幫助系統(tǒng)非常強(qiáng)大,,可以直接使用 “?topic” 或 help(topic)來(lái)獲取 topic 的幫助信息;也可使用
help.search(”topic”) 來(lái)搜索幫助系統(tǒng),。
如果你只知道函數(shù)的部分名稱(chēng),,那么可以使用 apropos(”tab”) 來(lái)搜索得到載入內(nèi)存所有包含
tab 字段的函數(shù)。
如果還沒(méi)有得到需要的資料,,還有 R Site Search:http://finzi.psych./search.
html,,等價(jià)于在 R 平臺(tái)上使用 RSiteSearch() 函數(shù)。
14. R 可使用的最大內(nèi)存是多少,?
3
R 經(jīng)常因?yàn)檫^(guò)分消耗內(nèi)存而受到指責(zé),,而事實(shí)也確是如此。不過(guò)還好,,我們使用的數(shù)據(jù)量通常不是
很大,,通常 R 都可以處理。特定條件下我們可能需要更大的內(nèi)存來(lái)做運(yùn)算,,提供兩種途徑來(lái)設(shè)定
(增大)內(nèi)存:
· 啟動(dòng) R 進(jìn)程前,,增加 R 啟動(dòng)參數(shù)。在 CMD 環(huán)境下,,運(yùn)行增加參數(shù)的 Rterm:
1 r ??max?mem?s i z e=1Gb
或通過(guò)添加 RHOME/bin 至系統(tǒng)環(huán)境中,,直接在 “運(yùn)行” 中運(yùn)行2
1 r gu i ??max?mem?s i z e=1Gb
· 啟動(dòng) R 進(jìn)程后,通過(guò) memory.limit 函數(shù)增大 R 進(jìn)程的內(nèi)存限制,。
R 的工作內(nèi)存大小的設(shè)定值為 32Mb 到 3Gb 間的任意數(shù)值,。但需要提示的是:Windows 平臺(tái)可用
最大有效內(nèi)存為 2Gb,也就是說(shuō),,實(shí)際上 R 的工作內(nèi)存區(qū)間為 32Mb 至 2Gb,。
15. 為什么 help.search() 搜索不能使用?
基于瀏覽器的搜索引擎要求正確安裝完整版 Java,,且 Java 和 Javascript 須嵌入瀏覽器,。
16. R 支持中文么?
支持,,但不好,!在 R 中,,大部分包的作者都是以英文為母語(yǔ)的,,不會(huì)對(duì)中文字符考慮太多,故建議
使用全英文環(huán)境,。
17. R 支持自動(dòng)補(bǔ)全(Tab completion)么,?
支持!在 2.5.0 版本中,,R 引入了命令自動(dòng)補(bǔ)全功能,,使用 Tab 鍵能自動(dòng)補(bǔ)全 R 命令;或使用第二
次 Tab 后,返回所有可能的補(bǔ)全命令列表,。
18. 如何清除變量,?
清除單個(gè)變量使用 rm() 函數(shù),清除內(nèi)存中所有的變量:
1 rm( l i s t = l s ( a l l = TRUE) )
19. 如何更改小數(shù)點(diǎn)后顯示數(shù)字位數(shù),?
options(digits = ) ,,digits 后面的參數(shù)為 1 至 22 的數(shù)字,默認(rèn)為 7,。options 函數(shù)還可以改變很多全
局選項(xiàng),,如更改提示符 (prompt) ,是否顯示錯(cuò)誤信息 (show.error.messages) 等,。
20. 如何調(diào)用系統(tǒng)內(nèi)的程序,?
使用 system() 函數(shù)或用 shell.exec() 調(diào)用相應(yīng)程序來(lái)打開(kāi)文件:
1 # go t o t h e c r a n
system ( paste (’'C:/Program Files/Internet Explorer/iexplore.exe'’ ,
2同樣支持 Rterm
4
3 ’cran.’ ) , wait = FALSE)
# i n v o k e t h e n o t e p a d
5 system ('notepad')
s h e l l . exec ('C:/WINDOWS/clock')
21. Windows 下升級(jí) R ,但不想重裝 packages ,?
在其他目錄下安裝 R,,再將舊版本保留的 library目錄下的文件拷貝至新版本 library目錄下,然后
update.packages() ,;或卸載 R ,,把 R 裝到舊的目錄下,然后 update.packages(),。
22. 如何卸載已安裝的 packages,?
參考
remove . packages ( c ('pkg1' ,'pkg2' ) ,
2 l i b = f i l e . path ('path' , 'to' , 'library' ) )
23. R 的工作目錄在哪里?
一般的,,Windows XP 下的 R 工作目錄在
C:\Documents and Se t t i n g s \username
或者使用 getwd() 命令獲得 R 的工作目錄 (Working Directory),,使用 setwd() 設(shè)置工作目錄位置。
24. 我怎樣保存自己的工作,?
使用 save.image() 函數(shù),。它將在 R 的起始目錄保存記憶區(qū)(working space)至.RData 文件;或者使
用 save(..., file = ) 保存需要保存的 R 對(duì)象,。
25. R 如何安裝包,?
通過(guò)選擇下載鏡像,R 可以自動(dòng)安裝未安裝在本地的包,,當(dāng)然也可以從鏡像網(wǎng)站下載可用的包,,直
接本地安裝3。
26. library() 的逆向操作是什么,?
當(dāng)加載包后,,需要分離 R 同包時(shí),可以使用
1 detach ('package:pkg')
27. Library 和 Package 有什么區(qū)別,?
這兩個(gè)概念的確容易混淆,,因?yàn)?R 中加載 Package 的命令是 Library,!Library 是一個(gè)目錄,可能
包含一個(gè)或多個(gè) Package,;而 Package 是包含函數(shù),、數(shù)據(jù)、手冊(cè)的一個(gè)集合,,屬于某個(gè) Library,,即
(Windows 下)的 “*.zip” 文件。
28. 如何得到加載 Package 的列表,?
3R 有 Unix,、Mac、Windows 三個(gè)版本,,注意包也分別對(duì)應(yīng)三個(gè)版本
5
search() 函數(shù)返回當(dāng)前加載的包的情況,,使用
1 . packages ( a l l . a v a i l a b l e = TRUE)
命令獲得本地安裝的包列表。
當(dāng) R 啟動(dòng)后,,R 在內(nèi)存中會(huì)自動(dòng)加載若干 Package:
R 初始狀態(tài)載入包列表
包 描述
stats 常用統(tǒng)計(jì)函數(shù)
graphics 基礎(chǔ)繪圖函數(shù)
grDevices 基礎(chǔ)或 grid 圖形設(shè)備
utils R 工具函數(shù)
datasets 基礎(chǔ)數(shù)據(jù)集
methods 用于 R 對(duì)象和編程工具的方法和類(lèi)的定義
base 基礎(chǔ)函數(shù)
29. 如何使用 R 內(nèi)置的數(shù)據(jù)集,?
R 在 datasets 包中共提供了 100 個(gè)可以使用的數(shù)據(jù)集,這些數(shù)據(jù)集都可以通過(guò) data() 函數(shù)加載入
內(nèi)存,。
1 dim( data ( ) $ r e s u l t s )
data ( ) $ r e s u l t s [ , 4 ]
30. R 的數(shù)據(jù)類(lèi)型有幾種,?
R(S 語(yǔ)言)沒(méi)有標(biāo)量,它通過(guò)使用各種類(lèi)型的向量來(lái)存儲(chǔ)數(shù)據(jù),。常用的數(shù)據(jù)類(lèi)型(class)有:
常用數(shù)據(jù)類(lèi)型
類(lèi)型 說(shuō)明
1 字符(charactor) 它們常常被引號(hào)包圍
2 數(shù)字(numeric) 實(shí)數(shù)向量
3 整數(shù)(integer) 整數(shù)向量
4 邏輯(logical) 邏輯向量(TRUE=T,、FALSE=F)
5 復(fù)數(shù)(complex) 復(fù)數(shù)a
6 列表(list) S 對(duì)象的向量
7 因子(factor) 常用于標(biāo)記樣本
a參考第 15 頁(yè) “復(fù)數(shù)計(jì)算”
在 R(S)語(yǔ)言中,有一點(diǎn)要牢記:
Everything in S is an object;
Every object is S has a class.
31. data frame 是什么,?
6
data frame(數(shù)據(jù)框)可以理解是一個(gè)松散的數(shù)據(jù)集,。它可以是由不同類(lèi)型的列(數(shù)字、因子,、字符
等)組成的類(lèi)矩陣(matrix-like),。
32. 如何得到函數(shù)的代碼?
通常情況你只需要在 R 平臺(tái)下寫(xiě)出你需要查看的函數(shù)名,,回車(chē)即可,。比如:
d i s t
但有時(shí)候這個(gè)函數(shù)可能是一個(gè)類(lèi)函數(shù)(Generic Function),上面的方法就需要稍稍改進(jìn)一下:先使
用 methods() 函數(shù)來(lái)查看這個(gè)類(lèi)函數(shù)的列表,,找到具體需要的函數(shù)4 ,,寫(xiě)出來(lái),回車(chē) — 問(wèn)題解決,。
1 summary # I t i s a g e n e r i c f u n c i t o n
methods ( summary) # l i s t o f t h e S 3 m e t h o d s
3 summary . lm # maybe y o u w a n t t o know t h e l i n e a r m o d e l s ’ s s umma r y
如果要究根問(wèn)底,,可以去下載源代碼壓縮包(*.tar.gz,,比如 R-2.5.1.tar.gz)
33. 我想查看一個(gè)矩陣的前(后)幾行,,怎么辦,?
可以使用 head() 或 tail() 函數(shù)。
1 head (CO2)
這兩個(gè)函數(shù)是類(lèi)函數(shù),,它們可以應(yīng)用于向量,、矩陣、數(shù)據(jù)框,、表格或函數(shù),。如果只想隨機(jī)看看對(duì)象
中的一些內(nèi)容,還可以使用 car 包中的 some 函數(shù),。
34. 在 R 中公式的符號(hào)都是什么意義,?
拿常見(jiàn)的 lm,glm 模型來(lái)說(shuō),,y ?model 是一種特定的格式,,表示以 y 為響應(yīng)變量,模型為 model,。
其中 model 中的變量由 + 來(lái)連接,,或者由: 來(lái)表示變量間的 “交互作用”。除了 + 和 : ,,我們使用
? 來(lái)表示 ′a+ b+ a : b′,。(a+ b+ c)∧2 表示 (a+ b+ c) ? (a+ b+ c),即主因素 a,、b,、c 和各個(gè)因素的
交互作用。? 表示去掉之意,。(a+ b+ c)∧2? a : b 表示 ′a+ b+ c+ b : c+ a : c′,。在公式表達(dá)中除了
變量和因子名外,運(yùn)算符號(hào)也是可以存在的,。如 ′ log(y) a+ log(x)′ 是合法的,。
符號(hào). 在 update 函數(shù)中有特殊的意義,它表示 “已經(jīng)存在” 之意,。
1 fm fm0 在第 H 節(jié)中的網(wǎng)格(lattice)繪圖,,我們還會(huì)看到 | 符號(hào),,它可以用來(lái)標(biāo)示 “條件變量”,。
35. R 里面可以使用科學(xué)計(jì)數(shù)法么,?
可以,。
1e10 == 10000000000
2 1 .2 e?4 == 0.00012
4標(biāo)注星號(hào)的函數(shù)可以使用 getAnywhere() 函數(shù)獲得代碼
7
§C 輸入輸出
36. R 可以讀取其他統(tǒng)計(jì)軟件錄入的數(shù)據(jù)么,?
可以,,使用 foreign 包,,它可以讀取 Minitab, S, SAS, SPSS, Stata, Systat, dBase 保存的數(shù)據(jù)
37. R 可以讀 Excel 的數(shù)據(jù)么,?
可以,,但不推薦直接讀取 Excel 文件,,或許只有微軟知道 Excel 里面有什么東西,。通常有三種方法
讀取 Excel:
1. 將 Excel 另存為 csv(Comma Separated Values) 文件,使用 read.csv() 函數(shù)讀?。ㄍ扑]),;
2. 加載 RODBC 包,使用 odbcConnectExcel() 函數(shù)讀取 xls 文件,,
l i b r a r y (RODBC)
2 z dd 4 c l o s e ( z )
詳細(xì)請(qǐng)參考 R Data Import/Export,;
3. xlsReadWrite 包中的 read.xls函數(shù)。
38. 可以將 R 中顯示的結(jié)果輸出到文件么,?
可以,。使用 sink()函數(shù)。
data (CO2)
2 s ink ('CO2.txt')
CO2
4 s ink ( ) # go t o y o u r w o r k d i r e c t o r y , y o u w i l l g e t CO2 . t x t
39. 如何調(diào)用 R 的輸出信息,?
R 提供了 capture.output() 函數(shù),,這個(gè)函數(shù)可以將 R 的輸出信息轉(zhuǎn)化為字符或文件。
glmout 2 glmout [ 1 : 5 ]
當(dāng)然,,如果你想得到漂亮的輸出,,Go to LATEX!
40. R 可以從內(nèi)存直接讀寫(xiě)數(shù)據(jù)么?
可以,??截愋枰x取的內(nèi)容,使用
data 2 wr i t e . t ab l e ('clipboard')
8
41. 怎樣將因子 (factor) 轉(zhuǎn)換為數(shù)字
這個(gè)問(wèn)題時(shí)有發(fā)生,,假設(shè) f 是一個(gè)這樣的因子對(duì)象,,我們可以使用
as . numeric ( as . cha rac t e r ( f ) )
2 # o r
as . numeric ( l e v e l s ( f ) ) [ as . i n t e g e r ( f ) ]
42. R 可以使用電子表格輸入數(shù)據(jù)么?
可以使用 edit()和 fix()函數(shù),。
1 data ed i t ( x ) ; f i x ( x )
43. 為什么當(dāng)我使用 source() 時(shí),,不能顯示輸出結(jié)果?
對(duì)需要顯示輸出的對(duì)象使用 print() ,,或者使用 source(file,echo = TRUE),。如果 R 代碼里面包含
sink() 之類(lèi)的函數(shù),必須使用 source(file,echo = TRUE) 才能得到正確的輸出結(jié)果,,否則 sink 的對(duì)
象將為空,。
44. R 可以輸出可供 TEX 使用的文本么?
可以,,參考 Hmisc 包中的 latex() 函數(shù)和 xtable 包中的 xtable()函數(shù),。
a 2 colnames ( a ) x tab l e ( a )
xtable() 函數(shù)可以用于產(chǎn)生 HTML 格式的原碼,這樣 R 生成的表格就可以非常方便,、漂亮地插入
到 word,、powerpoint 這類(lèi)文字處理軟件。
輸出 LATEX 格式的表格還可以 quantreg 包中的 latex.table()函數(shù)。
45. 找不到文件,,但我知道它在哪,!
在 R 里面使用必須使用雙反斜杠或單斜杠表示文件路徑,比如:
1 d :\\R?2.4.1\\ l i b r a r y \\ xgobi \\ s c r i p t s \\ xgobi . bat
d : /R?2.4 .1 / l i b r a r y / xgobi / s c r i p t s / xgobi . bat
當(dāng)然還可以使用 file.choose()函數(shù)打開(kāi)一個(gè) Windows標(biāo)準(zhǔn)文件選擇對(duì)話框,,手動(dòng)選擇文件,。當(dāng)然還
有可以使用 choose.dir() 打開(kāi) Windows 標(biāo)準(zhǔn)目錄選擇對(duì)話框 ,,。
46. R 可以直接從數(shù)據(jù)庫(kù)讀取數(shù)據(jù)么,?
可以,并且還可以通過(guò) SQL語(yǔ)句對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作,。R對(duì)于基于 SQL語(yǔ)言的關(guān)系型數(shù)據(jù)庫(kù)有良好
的支持,,這些數(shù)據(jù)庫(kù)既有商業(yè)數(shù)據(jù)庫(kù) Oracle、Microsoft SQL Server,、IBM DB2 等,,也包含在 GNU
General Public License (GPL) 下發(fā)布的 MySQL 等開(kāi)源數(shù)據(jù)庫(kù)。
9
RMySQL 5 包中提供了到 MySQL 數(shù)據(jù)庫(kù)的接口,;RODBC 包提供了更為廣泛數(shù)據(jù)庫(kù)接口的解
決方案 — 支持所有標(biāo)準(zhǔn) ODBC 接口的數(shù)據(jù)庫(kù),。通過(guò)這種方式,相同的 R 代碼可以方便地應(yīng)用于
不同類(lèi)型的數(shù)據(jù)庫(kù),。
l i b r a r y (RODBC)
2 ch s t o ck s 4 odbcClose ( ch )
經(jīng)測(cè)試,,Windows 平臺(tái)上的 Microsoft SQL Server、Access,、Oracle,、MySQL、PostgreSQL,,和
Linux 平臺(tái)上的 MySQL,、Oracle、PostgreSQL,、SQLite 都有良好的應(yīng)用案例(詳細(xì)參考 R-data),。
§D 數(shù)據(jù)處理
47. 如何刪掉缺失值?
在 R 中使用 NA(not available)表示缺失值,,要注意 R(S)語(yǔ)言中 NA 同樣是一個(gè)邏輯值,,6
x 2 x > 3
c l a s s ( x )
故當(dāng)判斷是否相等時(shí)不能使用
1 x == NA
來(lái)判斷缺失值。而是使用函數(shù) is.na()來(lái)判斷是否為缺失值,,使用
1 x [ ! i s . na (x ) ]
刪除缺失值,。
48. 如何將字符串轉(zhuǎn)變?yōu)槊顖?zhí)行?
這里用到 eval() 和 parse() 函數(shù),。首先使用 parse() 函數(shù)將字符串轉(zhuǎn)化為表達(dá)式(expression),,而后
使用 eval() 函數(shù)對(duì)表達(dá)式求解。
1 x a 3 c l a s s ( a )
eva l ( parse ( t ex t = a ) )
49. 如何向一個(gè)向量追加元素,?
參考 append()函數(shù),。
5需要包 DBI 的支持
6R 共有三個(gè)邏輯值 TRUE,、FALSE、NA
10
x 2 ( foo append (x , 0 , a f t e r = 1)
50. 如何移除某行 (列) 數(shù)據(jù)
可以使用函數(shù) subset(select = ) ,;或者使用下標(biāo):
1 x dim(x )
3 pr in t ( x )
new . x1 5 new . x2 new . x1 ; new . x2
事實(shí)上,,關(guān)于選取特定條件下的數(shù)據(jù)框數(shù)據(jù),subset 函數(shù)同使用下標(biāo)效果相同:
iS 2 i r i s [ iS , c ( 1 , 3 ) ]
subset ( i r i s , s e l e c t = c ( Sepal . Length , Peta l . Length ) , Spec i e s == 'setosa')
51. 如何比較兩個(gè)數(shù)據(jù)框是否相同,?
比較每個(gè)元素是否相同,,如果每個(gè)元素都相同,那么這兩個(gè)數(shù)據(jù)框也相同
1 a1 a2 3 a2 [ [ 3 , 1 ] ] a2 [ [ 8 , 2 ] ]
any ( a1 !=a2 ) # a l l ( a 1 == a 2 )
any() 函數(shù)可以返回是值是否至少有一個(gè)為真的邏輯值,。而數(shù)據(jù)框中的元素有不相等的情況,,則
a1 !=a2
將返回至少一個(gè) TRUE,那么 any() 函數(shù)將判斷為 TRUE,。同樣也可以使用 identical() 函數(shù),。
1 i n d e n t i c a l ( a1 , a2 )
如果需要返回兩個(gè)數(shù)據(jù)框不相同的位置,可以使用
1 which ( a1 !=a2 , a r r . ind = TRUE)
arr.ind 參量是 array indices 之意,,返回?cái)?shù)據(jù)框的行列位置,。
52. 我的數(shù)據(jù)框有相同的行,如何去掉這些行,?
參考 unique 函數(shù),。unique 函數(shù)可以去掉向量、數(shù)據(jù)框或類(lèi)似數(shù)列的數(shù)據(jù)中重復(fù)的元素,。
11
1 x ( xu 3 unique (x ) # i s mo r e e f f i c i e n t
這里 duplicated 函數(shù)返回了元素是否重復(fù)的邏輯值,。
53. 如何對(duì)數(shù)列(array)進(jìn)行維度變換?
使用函數(shù) aperm
1 x xt 3 dim(x ) ; dim( xt )
54. 如何刪除 list 中的元素,?
R 中使用 NULL 表示無(wú)效的對(duì)象,。
1 l s t l s t [ [ 'a' ] ] [ 'b' ] 3 l s t
55. 如何對(duì)矩陣按行 (列) 作計(jì)算?
使用函數(shù) apply()
1 vec=1:20
mat=matrix ( vec , nco l=4)
3 vec
cumsum( vec )
5 mat
apply (mat , 2 , cumsum)
7 apply (mat , 1 , cumsum)
56. 如何注掉大段的 R 腳本
如果你使用支持正則表達(dá)式的文本編輯器的話,,可以考慮用正則表達(dá)式 (Regular Expression) ,;或
者將大段的代碼寫(xiě)入一個(gè) *.R 文件,如果需要注掉的話,,在 source(*.R) 前加入 # 即可,;還可以使

1 i f (FALSE){
something passby
3 }
57. 如何對(duì)數(shù)據(jù)框 (data frame) 的某列作數(shù)學(xué)變換?
使用 transform() 函數(shù)對(duì)其操作,,具體參考?transform
12
58. 如何求解兩組平行向量的極值,?
pmax() 和 pmin() ,如:
1 x pmax(x , y ) ; pmin (x , y )
59. 如何對(duì)不規(guī)則數(shù)組進(jìn)行統(tǒng)計(jì)分析,?
參考 tapply() :
n 2 t ab l e ( f a c )
tapply ( 1 : n , fac , sum)
4 tapply ( 1 : n , fac , mean)
## o r r e v e r s e a l i s t
6 to tapply ( to , u n l i s t ( to ) , names )
tapply() 的常見(jiàn)于方差分析中對(duì)各個(gè)組別進(jìn)行 mean,、var(sd)的計(jì)算。說(shuō)到概要統(tǒng)計(jì),不得不說(shuō)另
外一個(gè)函數(shù) aggregate(),,它將 tapply() 函數(shù)對(duì)象為向量的限制擴(kuò)展到了數(shù)據(jù)框,。7
1 attach ( warpbreaks )
tapply ( breaks , l i s t ( wool , t en s i on ) ,mean)
3 aggregate ( breaks , l i s t ( wool , t en s i on ) ,mean)
## f r om t h e h e l p
5 aggregate ( s t a t e . x77 ,
l i s t ( Region = s t a t e . reg ion ,
7 Cold = s t a t e . x77 [ ,'Frost' ] > 130) ,
mean)
60. 判斷數(shù)據(jù)框的列是否為數(shù)字?
sapply(dataframe, is.numeric)
61. 一組數(shù)中隨機(jī)抽取數(shù)據(jù),?
函數(shù) sample()
sample(n) 隨機(jī)組合 1, . . . , n
sample(x) 隨機(jī)組合向量 x, length(x) > 1
sample(x, replace = T) 解靴帶法
sample(x,n) 非放回的從 x 中抽取 n 項(xiàng)
sample(x,n, replace = T) 放回的從 x 中抽取 n 項(xiàng)
sample(x,n, replace = T ,prob = p) 以概率 p,,放回的從 x 中抽取 n 項(xiàng)
7當(dāng)然同樣概要統(tǒng)計(jì)的表現(xiàn)形式不一樣
13
n 2 x p lo t (cumsum(x ) , type='l' ,
4 main='Cumulated sums of Bernoulli variables')
還可以參考第 17 頁(yè)中關(guān)于模擬已知分布的隨機(jī)數(shù)據(jù)函數(shù),如:
rnorm (100 , mean=0, sd=1)
62. 如何根據(jù)共有的列將兩個(gè)數(shù)據(jù)框合并,?
我們經(jīng)常會(huì)遇到兩個(gè)數(shù)據(jù)框擁有相同的時(shí)間或觀測(cè)值,,但這些列卻不盡相同。處理的辦法就是使用
merge(x, y ,by.x = ,by.y = ,all = ) 函數(shù),。
63. 如何將數(shù)據(jù)標(biāo)準(zhǔn)化,?
參考 scale 函數(shù),。
1 x m 3 n 64. 為什么 fivenum 和 summary 兩個(gè)函數(shù)返回的結(jié)果不同,?
因?yàn)樗麄儗?duì)數(shù)據(jù)描述機(jī)理一致,所以有些教材將二者等同,,但他們確實(shí)有細(xì)微差別,。
1 > fivenum ( c (1 , 4 , 6 , 17 , 50 , 51 , 70 , 100 ) )
[ 1 ] 1 . 0 5 . 0 33 .5 60 .5 100 .0
3 > quan t i l e ( c (1 , 4 , 6 , 17 , 50 , 51 , 70 , 100 ) )
0% 25% 50% 75% 100%
5 1 .00 5 .50 33 .50 55 .75 100 .00
我們看下他們的的定義:分位數(shù)是指有百分之多少的數(shù)據(jù)小于的數(shù)值(summary() 函數(shù),即使用分
位數(shù)概念),,我們可以看到 14 , 34 分位數(shù)的定義:
1 +
1
4
(length(x)? 1),1
4
分位數(shù)
1 +
3
4
(length(x)? 1),3
4
分位數(shù)
而 fivenum() 函數(shù)是完全利用中位數(shù)概念,。
§E 數(shù)學(xué)運(yùn)算
65. 如何做出曲線積分?
R 語(yǔ)言使用 integrate 函數(shù)來(lái)得到積分結(jié)果,,如
14
1 i n t e g r a t e (dnorm , ?1.96 , 1 . 96 )
i n t e g r a t e (dnorm , ?In f , I n f )
3 ## a s l o w l y ? c o n v e r g e n t i n t e g r a l
in tegrand 5 i n t e g r a t e ( integrand , lower = 0 , upper = In f )
66. 如何得到一個(gè)列向量,?
矩陣轉(zhuǎn)置可以使用函數(shù) t() ,R 中默認(rèn) x 為 “integer” 類(lèi)型數(shù)據(jù),,這時(shí)可以用 t(t(x)) 得到列向量:
1 x t ( x ) ; c l a s s ( t ( x ) )
3 t ( t ( x ) ) ; c l a s s ( t ( t ( x ) ) )
行向量,、列向量常常會(huì)有一個(gè)比較容易讓人迷糊的地方:
1 x%?%x
計(jì)算的是 xTx(計(jì)算 xxT 使用 %o% 或 outer() 函數(shù))。crossprod() 函數(shù)能避免這種情況:
1 XT. y 它直接計(jì)算 XTY,,可以看作前者的另一種表達(dá)方式,,當(dāng)然 crossprod() 更為有效8。由于 outer() 函
數(shù)的矩陣意義,,它常用于三維繪圖數(shù)據(jù),,比如我們計(jì)算
10× sin

x2 + y2√
x2 + y2
那么對(duì)應(yīng)的 R 函數(shù)計(jì)算為:
1 f z 67. R 如何進(jìn)行復(fù)數(shù)計(jì)算?
參考 complex() 函數(shù)的幫助,。
x 2 Mod(x ) ; Conj ( x )
68. 如何生成對(duì)角矩陣,?
對(duì)一個(gè)向量使用 diag() 函數(shù),得到對(duì)角線元素為向量的對(duì)角矩陣,;對(duì)整數(shù) Z 使用此函數(shù)得到 Z 維
的單位矩陣,。
69. 求矩陣的特征值和特征向量的函數(shù)是什么?
參考:eigen 函數(shù)
8當(dāng)矩陣很大時(shí),會(huì)非常明顯 ,
15
70. 如何構(gòu)造上(下)三角矩陣,?
參考函數(shù) lower.tri() 和 upper.tri() ,。
Rmat 2 Rmat [ lower . t r i (Rmat ) ] Rmat
71. 求立方根如何運(yùn)算?
x?(1/3),。在 R 里面 sqrt() 函數(shù)可以計(jì)算開(kāi)平方,,故新手容易推測(cè)開(kāi)立方也有函數(shù)。事實(shí)上 R 里面
使用 ? 來(lái)作冪函數(shù)運(yùn)算,。? 不但是運(yùn)算符號(hào),,還可以看作是函數(shù):
1 '?'( x , 1/ 3)
在 R 中的運(yùn)算符號(hào)包括:
R 中的運(yùn)算符號(hào)
數(shù)學(xué)運(yùn)算 +,-,*,/,?,%%,%/% 加、減,、乘,、除、乘方,、余數(shù),、整除
邏輯運(yùn)算 >,<,>=, <=,==, ! = 大于,小于,,大于等于,,小于等于,等于,,不等于
72. 如何求矩陣各行 (列) 的均值,?
如果運(yùn)算量不是很大,當(dāng)然可以使用 apply()函數(shù),。rowMeans()和 colMeans()函數(shù)可以更快地得到
你要的結(jié)果,。
1 m A 3 system . time (B1 system . time (B2 73. 如何計(jì)算組合數(shù)或得到所有組合?
choose()用于計(jì)算組合數(shù) (nk),,函數(shù) combn()可以得到所有元素的組合,。使用 factorial()計(jì)算階乘。
74. 如何在 R 里面求(偏)導(dǎo)數(shù),?
使用函數(shù) D()
f1 2 f 2 D( f ,'x')
75. 如何求一元方程的根,?
使用 uniroot()函數(shù),不過(guò) uniroot 是基于二分法來(lái)計(jì)算方程根,,當(dāng)初始區(qū)間不能滿足要求時(shí),,會(huì)返
回錯(cuò)誤信息。
1 f un i root ( f , c ( 0 , 2 ) )
16
如果一元方程的根恰恰是其極值,,那么還可以使用 optimize()函數(shù)來(lái)求極值,。
f 2 opt imize ( f , c (?2 ,2))
76. 如何模擬高斯(正態(tài))分布數(shù)據(jù)?
使用 rnorm(n , mean , sd) 來(lái)產(chǎn)生 n 個(gè)來(lái)自于均值為 mean,,標(biāo)準(zhǔn)差為 sd 的高斯(正態(tài))分布的數(shù)
據(jù),。在 R里面通過(guò)分布前增加字母 ‘d’表示概率密度函數(shù),,‘p’表示累積分布函數(shù),‘q’表示分位
數(shù)函數(shù),,‘r’ 表示產(chǎn)生該分布的隨機(jī)數(shù),。這些分布具體可以參考第 20 頁(yè)中 “如何做密度曲線”,或
R-intro 中的 Probability distributions 章節(jié),,或
help . search ('distribution')
使用這些函數(shù)可以很輕松的進(jìn)行相關(guān)的分布的概
率計(jì)算,,如已知 X?N(3, 1),計(jì)算
P (2 6 X 6 5)
利用正態(tài)分布的累積分布函數(shù) pnorm
1 pnorm (5 , 3 , 1 ) ? pnorm (2 , 3 , 1 )
計(jì)算結(jié)果為 0.8185946,,即右圖中陰影的面積,。
?2 0 2 4 6 8
0.
0
0.
1
0.
2
0.
3
0.
4
D
en
si
ty
P(2§F 字符操作
77. R 對(duì)大小寫(xiě)敏感么?
R 中有很多基于 Unix 的包,,故 R 對(duì)大小寫(xiě)是敏感的,。可以使用 tolower() ,、toupper() ,、casefold()
這類(lèi)的函數(shù)對(duì)字符進(jìn)行轉(zhuǎn)化。
1 x char t r ('iXs' , 'why' , x )
3 char t r ('a-cX' , 'D-Fw' , x )
to lower (x )
5 toupper ( x )
78. R 運(yùn)行結(jié)果輸出到文件中時(shí),,文件名中可以用變量代替嗎,?
可以,,通過(guò)使用 paste() 函數(shù),。
17
1 f o r ( var in l e t t e r s [ 1 : 6 ] ) {
x 3 wr i t e . t ab l e ( x , paste ('FOO ' , var , '.txt' , sep = '' ) )
} # You w i l l g e t ”FOO a . t x t ” . . .
79. 在 R 中如何使用正則表達(dá)式(Regular Expressions )
在 R中,有三種類(lèi)型的正則表達(dá)式:extended regular expressions,,使用函數(shù) grep(extended = TRUE)
(默認(rèn)),;basic regular expressions,使用 grep(extended = FALSE),;Perl-like regular expressions,,使
用 grep(perl = TRUE)。比如 “.” 用來(lái)匹配任意字符(使用 “\.” 來(lái)匹配 “.”):
grep ('J.' , month . abb )
詳細(xì)可以參考 help(”regex”),。
80. 如何在字符串中選取特定位置的字符,?
參考 substr()函數(shù)。
1 subs t r ('abcdef' , 2 , 4 )
sub s t r i ng ('abcdef' , 1 : 6 , 1 : 6 )
這個(gè)函數(shù)同時(shí)支持中文,,用她來(lái)處理 “簡(jiǎn)稱(chēng)” 和 “全稱(chēng)” 還是一個(gè)不錯(cuò)的選擇的,。
81. 如何返回字符個(gè)數(shù)?
參考 nchar ,。
nchar (month . name [ 9 ] )
§G 日期時(shí)間
82. 日期可以做算術(shù)運(yùn)算么,?
可以。一般我們需要使用 as.Date() ,,as.POSIXct() 函數(shù)將讀取的日期(字符串)轉(zhuǎn)化為 “Date” 類(lèi)
型數(shù)據(jù),,“Date” 類(lèi)型數(shù)據(jù)可以進(jìn)行算術(shù)運(yùn)算,。
1 d1 D1 3 D2 D1 + 2 ; D1 ? D2
5 d i f f t im e (D1 ,D2 , un i t s = 'days')
83. 如何將日期表示為 “星期日, 22 七月 2007” 這種格式?
使用 format() 函數(shù),。
18
1 format ( ( Sys . Date ( ) , format='%A, %d %B %Y')
具體 format 參數(shù)可以參考 help(strptime) 的 details 部分,。
§H 繪圖相關(guān)
84. 如何在同一畫(huà)面畫(huà)出多張圖?
這里提供三種解決方案:
· 修改繪圖參數(shù),,如 par(mfrow = c(2,2)) 或 par(mfcol = c(2,2)),;
· 更為強(qiáng)大功能的 layout函數(shù),它可以設(shè)置圖形繪制順序和圖形大??;
· split.screen()函數(shù)。
推薦使用 layout() 函數(shù),,Statistics with R 的一個(gè)例子:
1 l ayout ( matrix ( c (1 , 1 , 1 ,
2 , 3 , 4 ,
3 2 , 3 , 4 ) , nr = 3 , byrow = T))
h i s t ( rnorm (25 ) , c o l = 'VioletRed')
5 h i s t ( rnorm (25 ) , c o l = 'VioletRed')
h i s t ( rnorm (25 ) , c o l = 'VioletRed')
7 h i s t ( rnorm (25 ) , c o l = 'VioletRed')
85. 如何設(shè)置圖形邊緣大小
修改繪圖參數(shù) par(mar = c(bottom, left, top, right)),,bottom, left, top, right 四個(gè)參數(shù)分別是距
離 bottom, left, top, right 的長(zhǎng)度,默認(rèn)距離是 c(5, 4, 4, 2) + 0.1,?;蛘咝薷睦L圖參數(shù) par(mai =
c(bottom, left, top, right)),以英寸為單位來(lái)指定邊緣大小,。
86. 常用的 pch 符號(hào)都有哪些,?
pch 是 plotting character 的縮寫(xiě)。pch 符號(hào)
可以使用 “0 : 25” 來(lái)表示 26 個(gè)標(biāo)識(shí)(參
看右圖 “pch 符號(hào)”),。當(dāng)然符號(hào)也可以使用
#,%, ?, |,+,?, ., o, O,。值得注意的是,21 : 25
這幾個(gè)符號(hào)可以在 points函數(shù)使用不同的顏
色填充(bg= 參數(shù)),。
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
1 op x 3 p lo t (x , s i n (x ) , type = 'o' , bg=par ('bg' ) )
po in t s (x , s i n (x ) , pch = 21 , cex =1.5 , bg='red')
19
87. 如何在已有圖形上加一條水平線
使用低水平繪圖命令 abline(),,它可以作出水平線(y值 h=)、垂線(x值 v=)和斜線(截距 a=,,斜
率 b=),。
R中的繪圖命令可以分為 “高水平”(High level)、“低水平(Low level)”和 “交互式”(Interactive)
三種繪圖命令,。
簡(jiǎn)要地說(shuō),,“高水平” 繪圖命令可以在圖形設(shè)備上繪制新圖;“低水平” 繪圖命令將在已經(jīng)存在
圖形上添加更多的繪圖信息,,如點(diǎn),、線、多邊形等,;使用 “交互式” 繪圖命令創(chuàng)建的繪圖,,可以使用
如鼠標(biāo)這類(lèi)的定點(diǎn)裝置來(lái)添加或提取繪圖信息。在已有圖形上添加信息當(dāng)然要使用 “低水平” 繪圖
命令,。
88. 如何做密度曲線,?
常用的辦法是:做出 x 的一個(gè)序列,,然后做出dfunction(x),比如:
x=seq (?3 , 3 , . 0 5 )
2 p lo t (x , dnorm(x ) , type='l')
l i n e s (x , dt (x , 1 ) , c o l = 'red')
dfunction(x) 中的 function 是指分布族,,可以參考 R-intro 中的 Probability distributions 章節(jié),,或
help.search(”distribution”)。關(guān)于構(gòu)造相關(guān)分布函數(shù)參考第 17 頁(yè)中 “如何模擬高斯分布數(shù)據(jù)”,。
R 中的分布函數(shù)
分布 R 函數(shù) 附加參數(shù) 默認(rèn)參數(shù)
beta beta shape1(α),shape2(β)
二項(xiàng) binom size(n),prob(p)
χ2 chisq df
均勻 unif min(a),max(b) min = 0,max = 1
指數(shù) exp rate rate = 1
F f df1(r1),df2(r2)
伽瑪 gamma shape(α),scale(θ) scale = 1
超幾何 hyper m = N1, n = N2, k = n
正態(tài) norm mean(μ),sd(σ) mean = 0, sd = 1
泊松 pois lamda(λ)
t t df
威布爾 weibull shape(α),scale(θ) scale = 1
89. 如何加圖例,?
繪制圖形后,使用 legend函數(shù),,help(”legend”)
1 with ( i r i s , p l o t ( Sepal . Length , Sepal .Width ,
pch=as . numeric ( Spec i e s ) , cex =1.2))
20
3 l egend ( 6 . 1 , 4 . 4 , c ('setosa' , 'versicolor' , 'virginica' ) ,
cex =1.5 , pch=1:3)
90. 怎么做餅圖,?
參考 pie()函數(shù)。餅圖展示數(shù)據(jù)的能力較差,,因?yàn)槲覀兊难劬?duì)長(zhǎng)度單位比較敏感,,而對(duì)關(guān)聯(lián)區(qū)域和
角度感覺(jué)較差。建議使用條形圖(bar chart)和點(diǎn)圖(dot chart),。
91. 如何做莖葉圖,?
參考 stem 函數(shù)。
stem ( f a i t h f u l $ e rupt i ons )
92. R 如何做雙坐標(biāo)圖,?
在 R 中可以通過(guò)繪圖參數(shù) par(new = TRUE)使得繪制第二個(gè)繪圖 (hight-level plot) 時(shí)保留第一個(gè)
繪圖區(qū)域,,這樣兩張繪圖會(huì)重疊在一起,看起來(lái)就是雙坐標(biāo)圖,。下面的例子是在同一張圖上繪制
GDP 和失業(yè)率 (UR):
1 year x1 3 x2 par (mar = c (5 ,4 , 4 , 6 )+0 .1 )
5 p lo t ( x1 , axes = FALSE, type='l')
ax i s (1 , at = year , l a b e l = year ) ; ax i s (2 )
7 par (new = T, mar = c (10 , 4 , 10 , 6 ) + 0 . 1 )
p l o t ( x2 , axes = FALSE, xlab = '' , y lab = '' , c o l = 'red' , type= 'b')
9 mtext ('UR(%)' , 4 , 3 , c o l='red')
ax i s (4 , c o l ='red' , c o l . ax i s = 'red')
但不推薦使用雙坐標(biāo)圖來(lái)進(jìn)行數(shù)據(jù)描述,,這樣很容易造成誤解。并且在 R 中做出并排圖形作對(duì)比
很容易,,沒(méi)有必要繪制雙坐標(biāo)圖,。
93. 如何為繪圖加入網(wǎng)格?
使用 grid() 函數(shù),,
p lo t ( 1 : 3 )
2 g r id (NA, 5 , lwd = 2) # g r i d o n l y i n y? d i r e c t i o n
94. 如果繪圖時(shí)標(biāo)題太長(zhǎng),如何換行,?
可以使用 strwrap 函數(shù),,這個(gè)函數(shù)可以將定義段落格式。
p lo t (0 ,main = paste ( strwrap ('This is a really long title that
2 i can not type it properly' , width = 50 ) ,
21
c o l l a p s e = '\n' ) )
95. 可以打開(kāi)多個(gè)圖形設(shè)備么,?
可以,。當(dāng)打開(kāi)多個(gè)圖形設(shè)備后,使用 dev.list()察看圖形設(shè)備的數(shù)目(除了設(shè)備一),,使用 dev.cur()察
看當(dāng)前使用的圖形設(shè)備,,dev.set()改變激活指定的圖形設(shè)備,dev.off()關(guān)閉圖形設(shè)備,。
96. 坐標(biāo) y 上的數(shù)字如何水平放置,?
仍然是繪圖參數(shù)問(wèn)題:
1 ?par # s e e l a s
p lo t (0 , 0 , xaxt='n' , type='n' , yl im=c (0 , 100 ) , l a s=1 )
3 mtext ('35' , s i d e =2, at=35, l i n e =1, l a s =1)
97. 常用的繪圖設(shè)備都有哪些,?
R 支持的圖形設(shè)備有如下幾種(參考?Devices):
R 圖形設(shè)備
名稱(chēng) 描述
屏幕 x11 X 窗口
顯示 windows Windows 窗口
postscript ps 格式文件
pdf pdf 格式文件
pictex 供 LATEX使用的文件
文件 png png 格式文件
設(shè)備 jpeg jpeg 格式文件
bmp bmp 格式文件
xfig 供 XFIG 使用的圖形格式
win.metafile a emf 格式的文件
a僅在 Windows 下有效
這里推薦使用 postscript() 函數(shù),因?yàn)?ps 圖形格式為矢量繪圖格式,,且通用性較強(qiáng),。
98. 如何做雷達(dá)圖?
R 里面使用 stars 函數(shù)來(lái)做雷達(dá)圖,。
1 s t a r s ( s t a t e . x77 [ , c (7 , 4 , 6 , 2 , 5 , 3 ) ] , f u l l = FALSE,
key . l o c = c (10 , 2 ) )
這里的的 full = FALSE 參數(shù)表示只繪制雷達(dá)圖的上半部分(反之,,繪制整個(gè)雷達(dá)圖);key.loc 參數(shù)
表示基準(zhǔn)圖例的位置,。
99. 為什么 R 不能顯示 8 種以上的顏色,?
當(dāng)繪圖參數(shù) col使用數(shù)字來(lái)代替顏色名時(shí)會(huì)有這種情形,這是因?yàn)?R內(nèi)置調(diào)色板默認(rèn)為 8種顏色:
22
pa l e t t e ( )
2 barp lo t ( rnorm (15 , 10 , 3) , c o l = 1 : 15 )
p a l e t t e ( rainbow (15 ) )
4 barp lo t ( rnorm (15 , 10 , 3) , c o l = 1 : 15 )
p a l e t t e ('default')
在 R 中共有 657 種顏色名稱(chēng)可以使用,,它們的名稱(chēng)可以通過(guò)
1 c o l o r s ( )
來(lái)得到,,但事實(shí)上有些顏色名稱(chēng)代表的顏色重復(fù),R 中顏色名稱(chēng)只能顯示 502 種顏色,。當(dāng)然可以使
用函數(shù) rgb() 來(lái)指定任意色彩,。
100. 如何用不同的顏色來(lái)代表數(shù)據(jù)?
高級(jí)繪圖函數(shù)一般都有 col 參數(shù)可以設(shè)置,。對(duì)于像 barplot() 這類(lèi)圖形,,可以使用 “顏色組”(color
sets) 來(lái)設(shè)置顏色,顏色組包括如下幾類(lèi):
R 顏色組函數(shù)
名稱(chēng) 描述
rainbow() 彩虹色 ( )
heat.colors() 紅色至黃色 ( )
terrain.colors() 綠色,、棕色至白色 ( )
topo.colors() 深藍(lán)色至淺棕色 ( )
cm.colors() 淺藍(lán)到白色,,淺紫色 ( )
gay()、grey() 灰色 ( )
1 x barp lo t (x , c o l = rev ( heat . c o l o r s ( 1 0 ) ) )
3 barp lo t (x , c o l = gray ( ( 1 : 1 0 ) / 1 0 ) ) ;
101. 怎樣將 R 的顏色同 RGB 對(duì)應(yīng)起來(lái),?
參考函數(shù) col2rgb()
1 wr i t e . t ab l e ( t ( co l2 rgb ( rainbow (7 ) ) / 255) , sep = ',')
102. 如何調(diào)整所繪圖形的大?。?br>Windows 平臺(tái)下,,正常情況打開(kāi)繪圖窗口,,調(diào)整窗口大小,點(diǎn)擊菜單直接保存,,或使用 savePlot()
函數(shù)保存,;當(dāng)然也可以事先用
1 windows ( width = , he ight = )
打開(kāi)一個(gè)定義好大小的窗口,然后繪圖,;還可以使用 pdf() ,postscript() , png() ,jpeg() ,pictex() 等
“后臺(tái)生成” 函數(shù),,
23
1 ## s t a r t a PDF f i l e
pdf ('picture.pdf' , he ight=4,width=6)
3 ## y o u r d r a w i n g c ommand s h e r e
dev . o f f ( ) ### c l o s e t h e PDF f i l e
這些函數(shù)都有設(shè)置圖形大小的參數(shù);還可以使用
dev . copy ( device , f i l e='' , he ight , width )
命令,。
103. 如何模擬布朗運(yùn)動(dòng),?
布朗運(yùn)動(dòng)可以用標(biāo)準(zhǔn)正態(tài)的隨機(jī)模擬值的累積和來(lái)模擬:
1 # two d i m e n s i o n s
n 3 x y 5 p lo t (x , y , type = ’l’)
104. 如何獲得連接若干點(diǎn)的平滑曲線?
如果已知做出這些點(diǎn)的函數(shù)可以使用 curve(expr, from , to, add = T) 函數(shù),。反之,,使用立方曲線差
值函數(shù) spline(x , y , n= ) ,,如:
1 x y 3 p lo t (x , y )
sp 5 l i n e s ( sp )
105. 網(wǎng)格 (lattice) 繪圖和普通繪圖有什么區(qū)別?
網(wǎng)格(lattice)繪圖實(shí)際上是 S-plus中 Trellis繪圖在 R中的實(shí)現(xiàn),,是多元數(shù)據(jù)可視化的方法,。網(wǎng)格
繪圖相對(duì)于普通繪圖來(lái)說(shuō),是一種擁有 “固定格式” 的繪圖方式,,當(dāng)然它相對(duì)來(lái)說(shuō)較難修改,。如果
數(shù)據(jù)分屬不同的類(lèi)別,需要將這些類(lèi)別下的數(shù)據(jù)進(jìn)行比較,,網(wǎng)格繪圖是很不錯(cuò)的選擇:
1 l i b r a r y ( l a t t i c e )
histogram ( ? he ight | vo i c e . part , data = s i n g e r )
常用的 lattice 繪圖函數(shù)有:
24
常用 lattice 繪圖函數(shù)
函數(shù) 說(shuō)明
xyplot(y?x) 雙變量散點(diǎn)圖
dotplot(y?x) Cleveland 點(diǎn)圖 (逐行逐列累加圖)
barchart(y?x) y 對(duì) x 的條形圖
stripplot(y?x) 一維圖,,x 必須是數(shù)值型,y 可以是因子
bwplot(y?x) 箱線圖
histogram(?x) 直方圖
106. 如何繪制三維圖,?
參考 persp() ,,contour() 函數(shù)。這里需要注意的三維繪圖中第三維坐標(biāo)的形式,。參考第 15 頁(yè)中的
outer() 函數(shù),。
107. 想把一個(gè)數(shù)值的矩陣映射為一個(gè)顏色方格的矩陣,什么函數(shù),?
參考 image() 和 filled.contour() 函數(shù):
x 2 f r 4 10? s i n ( r ) / r
}
6 z image (x , y , z )
8 f i l l e d . contour (x , y , z )
108. 散點(diǎn)圖中散點(diǎn)大小同因變量值成比例如何畫(huà),?
在 R 中做這類(lèi)圖很簡(jiǎn)單,因?yàn)?R 的很多繪圖參數(shù)可以使用變量:
x 2 y symbols (x , y , c i r c l e s = y/2 , inche s = F, bg = x)
109. 我想為一個(gè)數(shù)據(jù)框的每一列都做 Q–Q 圖,?
使用 apply() 函數(shù)作用于矩陣的行或列,,且能避免 R 中的顯式循環(huán)
1 t ab l e par ( ask=TRUE) # w a i t f o r c h a n g i n g
3 r e s u l t s = apply ( tab le , 2 , qqnorm)
par ( ask=FALSE)
110. 如何在一個(gè)直方圖上添加一個(gè)小的箱線圖?
25
在直方圖的空白位置添加另外的小圖(像圖例一樣),,仍然使用參數(shù) par():
x 2 h i s t ( x )
op 4 boxplot ( x )
111. 如何在 R 的繪圖中加入數(shù)學(xué)公式或希臘字符,?
參考?plotmath ,熟悉 LATEX 的用戶,,會(huì)發(fā)現(xiàn)二者語(yǔ)法非常類(lèi)似,。
x 2 t ex t (3 , 2 , exp r e s s i on ( paste ('Temperature (' , degree , 'C) in 2003' ) ) )
t ex t (4 , 4 , exp r e s s i on ( bar ( x ) == sum( f r a c (x [ i ] , n ) , i ==1, n ) ) )
4 t ex t (6 , 6 , exp r e s s i on ( hat ( beta ) == (X? t ? X)?{ . 1} ? X? t ? y ) )
t ex t (8 , 8 , exp r e s s i on ( z [ i ] == sq r t ( x [ i ] ?2 + y [ i ] ? 2 ) ) )
112. 如何在條形圖上顯示每個(gè) bar 的數(shù)值?
如果明白 barplot()函數(shù)其實(shí)是由低級(jí)繪圖命令 rect()函數(shù)構(gòu)造的,,那下面的例子也就不難理解了:
1 x b 3 t ex t (b , x , l a b e l s = x , pos = 3)
113. 如何繪制橢圓或雙曲線,?
根據(jù)函數(shù)式的基本繪圖。直角坐標(biāo)系下可使用參數(shù)方程:
(
x
a
)2 + (
y
b
)2 = 1 =? x = a sin θ, y = b cos θ, 0 < θ < 2pi
1 t x 3 y p lo t (x , y , type = ’l’)
114. 在 word 里如何使用 R 生成的高質(zhì)量繪圖,?
矢量繪圖的效果是最好的,比如 eps,、pdf,,而不是位圖(png、jpg,、tiff 等),。在 word 里面,,可以使
用 eps,雖然在屏幕上顯示不是很好,,但打印效果卻不錯(cuò),。
§I 統(tǒng)計(jì)模型
115. 有沒(méi)有直接計(jì)算峰度和偏度的函數(shù)?
26
當(dāng)然自己寫(xiě)一個(gè)也費(fèi)不了太多時(shí)間,。FBasics 包中提供了
skewness ( )
2 ku r t o s i s ( )
可以直接計(jì)算偏度和峰度,。
116. 如何做交叉列聯(lián)表?
table() 函數(shù),。table(x) 為 x 的頻數(shù)表,;table(x,y) 為交叉列聯(lián)表。
x 2 prop . t ab l e (x , 1 )
117. 如何做線性回歸模型,?
線性模型是最核心的經(jīng)典統(tǒng)計(jì)方法,,且至今仍然有廣泛應(yīng)用;很多現(xiàn)代統(tǒng)計(jì)方法都是在此基礎(chǔ)上發(fā)
展起來(lái)的,。最簡(jiǎn)單的線性回歸模型為:
yi = α+ βxi + 2i
其中 α 為截距項(xiàng),,β 為模型的斜率,2 為誤差項(xiàng),。
lm() 函數(shù)提供了線性回歸的計(jì)算方法,。
lm . sw i s s lm() 的結(jié)果是一個(gè)包含回歸信息的列表,它包含以下信息:
coefficients:回歸系數(shù)(矩陣)
residuals:返回模型殘差(矩陣)
fitted.values:模型擬合值
. . .:. . .
可以使用如下命令得到列表名稱(chēng):
1 names ( lm . sw i s s )
summary() 和 anova() 分別返回回歸模型的概要信息和方差分析表,。
1 summary( lm . sw i s s ) # t h e s am e a s s umma r y . lm ( )
anova ( lm . sw i s s )
提取模型信息的類(lèi)函數(shù)有很多,,其他可以參考 R-intro 中 Statistical models in R 一節(jié)。
如果處理數(shù)據(jù)的量很大,,可以使用 biglm 包中的 biglm() 函數(shù),。這個(gè)函數(shù)可以用于 “海量” 數(shù)
據(jù)的回歸模擬。
118. 如何更新模型,?
參考 update() 函數(shù):
27
summary( f0 2 f 1 summary( f1 )
119. 如何使用逐步回歸,?
在 R里,可以使用計(jì)算逐步回歸的 step()函數(shù),。它以計(jì)算 AIC信息統(tǒng)計(jì)量為準(zhǔn)則,,選取最小的 AIC
信息統(tǒng)計(jì)量來(lái)達(dá)到逐步回歸的目的。
1 u t i l s : : example ( lm)
step ( lm .D9)
step 函數(shù)可使用 “both,forward,backward” 三種方法,,其默認(rèn)為 “backward”,。當(dāng)然你還可以參考
add1,drop1 函數(shù),。
120. R 中如何實(shí)現(xiàn)分位數(shù)回歸 (Quantile Regression)
參考 quantreg 和 quantregForest 包
data ( enge l )
2 taus rqs 4 f o r ( i in seq ( along = taus ) ) {
rqs [ [ i ] ] 6 tau = taus [ i ] , data = enge l )
l i n e s ( log10 ( enge l $ income ) , f i t t e d ( rqs [ [ i ] ] ) , c o l = i +1) }
8 l egend ('bottomright' , paste ('tau = ' , taus ) , i n s e t = . 04 ,
c o l = 2 : ( l ength ( taus )+1) , l t y =1)
121. 如何得到一個(gè)正態(tài)總體均值 μ 的區(qū)間估計(jì),?
很簡(jiǎn)單,t.test() 函數(shù)
1 x t . t e s t ( x )
122. 如何做聚類(lèi)分析?
K 均值聚類(lèi) (kmeans() ):
x 2 matrix ( rnorm (100 , mean = 1 , sd = 0 . 3 ) , nco l = 2) )
c l 4 p lo t (x , c o l = c l $ c l u s t e r , pch=3, lwd=1)
po in t s ( c l $ cente r s , c o l = 1 : 2 , pch = 7 , lwd=3)
6 segments ( x [ c l $ c l u s t e r ==1 , ] [ , 1 ] , x [ c l $ c l u s t e r ==1 , ] [ , 2 ] ,
28
c l $ c en t e r s [ 1 , 1 ] , c l $ c en t e r s [ 1 , 2 ] )
8 segments ( x [ c l $ c l u s t e r ==2 , ] [ , 1 ] , x [ c l $ c l u s t e r ==2 , ] [ , 2 ] ,
c l $ c en t e r s [ 2 , 1 ] , c l $ c en t e r s [ 2 , 2 ] ,
10 c o l =2)
層次聚類(lèi) (hclust() ):
n 2 ( x hc1 4 hc2 hc3 6 l ayout ( matrix ( c ( 1 , 1 , 2 , 3 ) , nrow = 2 , byrow = T) )
p l o t ( hc1 ) ; p l o t ( hc2 ) ; p l o t ( hc3 )
聚類(lèi)過(guò)程中我們可能只需要對(duì)象的分類(lèi)信息,,那么使用 cutree() 函數(shù)也是不錯(cuò)的選擇:
1 cut r e e ( hc , k = 1 : 3 )
當(dāng)然還有專(zhuān)做聚類(lèi)的包:cluster
1 l i b r a r y ( c l u s t e r )
c l u s p l o t ( x , pam(x , 2) $ c l u s t e r i n g )
123. 如何做主成分分析,?
stats 包中的 princomp 函數(shù)。
( pc . c r 2 p lo t ( pc . c r , type = 'lines' # o r ” b a r p l o t ”
) # o r s c r e e p l o t
4 l o ad ing s ( pc . c r )
princomp() 中的參數(shù) cor = TRUE 表示使用樣本相關(guān)矩陣作主成分分析,,反之使用樣本協(xié)方差矩
陣,。loadings() 返回因子荷載。screeplot() 繪制碎石圖,。
124. 怎樣做因子分析,?
在 R 中,使用factanal() 函數(shù)對(duì)矩陣進(jìn)行極大似然因子分析,。
example ( f a c t ana l )
125. 如何對(duì)樣本數(shù)據(jù)進(jìn)行正態(tài)檢驗(yàn),?
比較常見(jiàn)的方法:shapiro.test() ,ks.test()(Kolmogorov-Smirnov 檢驗(yàn)) ,,jarque.bera.test() (需要
tseries 包),。或者參考專(zhuān)門(mén)用作正態(tài)檢驗(yàn)的 normtest 包,,fBasics 包中的相關(guān)函數(shù),。這幾個(gè)包(包
括基礎(chǔ)包)大概提供了十幾種檢驗(yàn)函數(shù)。
29
126. 如何做配對(duì) t 檢驗(yàn),?
參考 t.test() 中的 paired 參數(shù),。
1 r e qu i r e ( s t a t s )
## S t u d e n t ’ s p a i r e d t? t e s t
3 t . t e s t ( ext ra ? group , data = s l eep , pa i r ed = TRUE)
這里需要注意的是數(shù)據(jù)的錄入形式(主要區(qū)別于 SPSS):
事實(shí)上如果你熟悉統(tǒng)計(jì)檢驗(yàn)的話,你完全可以使用
1 apropos ('test')
來(lái)返回所有關(guān)于 “檢驗(yàn)” 的信息,。比如一些常用的檢驗(yàn):
extra group
0.7 1
-0.6 1
· · · · · ·
4.6 2
3.4 2
bartlett.test 方差齊次性檢驗(yàn) binom.test 二項(xiàng)檢驗(yàn)
chisq.test χ2 檢驗(yàn) cor.test 相關(guān)性檢驗(yàn)
fisher.test Fisher 精確檢驗(yàn) friedman.test Friedman 秩和檢驗(yàn)
kruskal.test Kruskal-Wallis 秩和檢驗(yàn) mcnemar.test McNemar 檢驗(yàn)
pairwise.t.test 均值的多重比較 PP.test Phillips-Perron 檢驗(yàn)
var.test 方差比檢驗(yàn) wilcox.test Wilcoxon 秩和檢驗(yàn)
盡情享用吧,!
127. R 如何做結(jié)構(gòu)方程模型?
參考 sem 包,。
128. 多項(xiàng)式回歸應(yīng)該使用什么函數(shù),?
使用 I() ,例如:
1 lm(y ? x + I (x?2) + I (x ?3))
129. 如何使用方差分析(ANOVA),?
方差分析同線性回歸模型很類(lèi)似,,畢竟它們都是線性模型。最簡(jiǎn)單實(shí)現(xiàn)方差分析的函數(shù)為 aov(),,通
過(guò)規(guī)定函數(shù)內(nèi)公式形式來(lái)指定方差分析類(lèi)型:
方差分析
aov(x ? a) 單因素方差分析
aov(x ? a + b) 沒(méi)有交互作用的雙因素方差分析
aov(x ? a + b +a:b) 有交互作用的雙因素方差分析
aov(x ? a*b) 同上
30
130. 如何求解沒(méi)有常數(shù)項(xiàng)的線性回歸模型,?
只需在公式中引入 0 即可:
1 r e s u l t 131. 如何計(jì)算回歸模型參數(shù)的置信區(qū)間?
參考 confint函數(shù),,glm 模型和 nls 模型可參考 MASS 包中的 confint.glm和 confint.nls函數(shù),。
1 f i t c on f i n t ( f i t )
3 c on f i n t ( f i t , 'wt')
132. logistic 回歸相關(guān)函數(shù)是?
logistic 回歸是關(guān)于響應(yīng)變量為 0–1 定性變量的廣義線性回歸問(wèn)題,,這里需要使用廣義線性模型
glm() 函數(shù),,且廣義線性模型的分布族為二項(xiàng)分布。
廣義線性模型中的常用分布族
分布 函數(shù) 模型
高斯(Gaussian)a E(y) = xTβ 普通線性模型
二項(xiàng)(Binomial) E(y) = exp (xT β)
1+exp (xT β)
Logistic 模型和概率單位(probit)模型
泊松(Poission) E(y) = exp (xTβ) 對(duì)數(shù)線性模型
a正態(tài)(Normal)
高斯(正態(tài))分布族的廣義線性模型事實(shí)上同線性模型是相同的,,即
1 f i t 1 同線性模型
1 f i t 1 得到的結(jié)論是一致的,,當(dāng)然效率會(huì)差很多。
133. 如何使用正交多項(xiàng)式回歸,?
我們考慮回歸方程:
yi = β0 + β1xi + β2x2i + . . .+ βkx
k
i , i = 1, 2, . . . , n,
當(dāng)多項(xiàng)式的次數(shù) k 比較大時(shí),,x, x2, . . . , xk 會(huì)出現(xiàn)線性相關(guān)問(wèn)題。故需要使用正交多項(xiàng)式回歸來(lái)克
服這方面的缺點(diǎn),。在 R 中,,使用 poly() 函數(shù):
1 ( z 134. 如何求帽子矩陣?
參考 hat(),hatvalues() 函數(shù),。
135. D-W 檢驗(yàn)在哪里,?
31
car 包中的 durbin.watson 函數(shù),lmtest 包中的 dwtest 函數(shù),。
1 help . search ('Durbin-Watson')
136. 如何求 Spearman 等級(jí)(或 kendall)相關(guān)系數(shù)
cor() 函數(shù)默認(rèn)為求出 Person 相關(guān)系數(shù),,修改其 method 參數(shù)即可求得 Kendall τ 和 Spearman 秩
相關(guān)系數(shù)。
1 cor ( long l ey , method = 'spearman')
名稱(chēng) 方法 用途(條件)
Pearson 線性 正態(tài)總體假定
Kendall τ 協(xié)同 非參數(shù)檢驗(yàn)
Spearman 樣本秩 非參數(shù)檢驗(yàn)
137. 如何做 Decision Tree,?
基于樹(shù)型方法的模型(Tree-based model)并不被統(tǒng)計(jì)學(xué)背景的研究者所熟悉,,但它在其他領(lǐng)域卻時(shí)
常被廣泛應(yīng)用。下面是 Modern Applied Statistics With S 中的例子,,需要加載 rpart 包,。
1 l i b r a r y ( rpar t )
s e t . seed (123)
3 cpus . rp p l o t ( cpus . rp , uniform = T)
5 t ex t ( cpus . rp , d i g i t s = 3)
138. 如何使用時(shí)間序列相關(guān)模型?
假設(shè) 2t 是一組均值為 0,,方差為 σ2 的不相關(guān)的序列,,那么我們定義 q 階滑動(dòng)平均模型為
Xt =
q∑
0
βj2t?j
p 階自回歸模型:
Xt =
p∑
1
αiXt?i + 2t
定義 ARMA(p, q) 過(guò)程為
Xt =
p∑
1
αiXt?i +
q∑
0
βj2t?j
我們將加入季節(jié)因素的 arma模型稱(chēng)為 arima模型,R中使用 arima(x, order = c(0, 0, 0), seasonal =
list(order = c(0, 0, 0)) 對(duì)模型進(jìn)行擬合:
1 r e qu i r e ( g raph i c s )
( f i t 1 3 t sd i a g ( f i t 1 )
32
139. box-cox 變換,?
MASS 包中的
1 boxcox ( )
函數(shù),。
140. 檢驗(yàn)異方差的 Breusch-Pagan 檢驗(yàn)?
lmtest 包中的 bptest() 函數(shù),,或者利用 car 包中的 ncv.test() 函數(shù)
141. 如何做判別分析,?
參考 MASS 包中的 lda() 函數(shù)(Fisher Linear D iscriminant Analysis)和 qda() 函數(shù)。
142. 計(jì)算 OLS 有沒(méi)有簡(jiǎn)便方法?
有,,可以使用函數(shù) qr.solve() ,,
1 qr . s o l v e (X, y )
等價(jià)于 (X ′X)?1X ′y
143. 如何進(jìn)行典型相關(guān)分析?
典型相關(guān)分析是用于研究?jī)山M隨機(jī)變量之間的相關(guān)性的一種統(tǒng)計(jì)方法,。R 提供了 cancor() 函數(shù)進(jìn)
行相關(guān)計(jì)算,。
1 pop oec 3 cancor (pop , oec )
144. 如何使用 R 做生存分析?
需要加載 survival 包,。
1 # f i t a K a p l a n ?M e i e r a n d p l o t i t
f i t 3 p lo t ( f i t )
# l i f e t a b l e
5 cbind ( f i t $ time , f i t $n . r i s k , f i t $n . event , f i t $ surv )
注意 survfit 函數(shù)中分析方法 type 中有 “kaplan-meier”,“fleming-harrington”, “fh2” 三種方法可以選
擇,。
§J 其他
145. R 可以使用網(wǎng)頁(yè)來(lái)顯示結(jié)果么?
33
可以。包 Rpad 提供基于同 R 的網(wǎng)頁(yè)接口,,假設(shè)已經(jīng)安裝了包 Rpad ,,可以在本地查看 Rpad 的效
果:
1 l i b r a r y (Rpad)
Rpad ( ) # e n j o y i t
146. R 有類(lèi)似于 SPSS 的界面么?
有,!安裝包 Rcmdr ,,加載包后,使用命令
Commander ( )
調(diào)出可供使用的圖形使用界面,。由于這個(gè)圖形使用界面需要若干基礎(chǔ)包外的其他函數(shù),,故還需要包
car 、effects ,、abind,、lmtest、multcomp,、relimp,、RODBC、rgl 的支持,。
147. 怎樣來(lái)計(jì)算函數(shù)運(yùn)行使用時(shí)間,?
使用 system.time()。proc.time()可以獲得 R進(jìn)程存在的時(shí)間,,system.time()通過(guò)調(diào)用兩次 proc.time()
來(lái)計(jì)算函數(shù)運(yùn)行的時(shí)間,。
148. 在 R 中如何處理地圖數(shù)據(jù)?
R 提供了 maps 和 mapdata 兩個(gè)包來(lái)繪制地圖,,其中 mapdata 提供了中國(guó)地圖的相關(guān)信息:
1 l i b r a r y (mapdata )
map('china')
不過(guò)可惜,,這種方法得到的中國(guó)地圖沒(méi)有重慶的行政區(qū)劃,且各省的名稱(chēng)都是用數(shù)字拼裝而成,,不
能用 map 包中的函數(shù)像對(duì)
map('state')
一樣進(jìn)行進(jìn)一步加工,。
不過(guò)如果你熟悉地理數(shù)據(jù),那么 maptools 包將是一個(gè)不錯(cuò)的選擇,。她可以讀取,、處理空間對(duì)
象,且提供了同 PBSmapping, spatstat, maps, RArcInfo, Stata tmap, WinBUGS, Mondrian 這類(lèi)包
的封裝接口,。
149. Sweave 是用來(lái)做什么的,?
Sweave 提供了一種為 “混排 TEX 文本和 S 編碼” 生成文檔的機(jī)制。單個(gè)的 Sweave 文檔中既包含
TEX 文本又包含 S 編碼,,通過(guò)編譯最終形成的文檔包含:
· TEX 文檔的編譯輸出,;
· S 編碼和(或);
· S 編碼的代碼輸出(文本,、圖形),。
如果想了解更多,,請(qǐng)參考 Sweave User Manual,或參考附錄 A:Sweave 的實(shí)例,。
它的文檔形成過(guò)程:
34
Sweave 文檔 Sweave(in R)????????→ TEX文檔 L
ATEX??????→
dvipdfmx
最終 pdf 文檔
150. 如何釋放 R 運(yùn)行后占用的內(nèi)存,?
使用函數(shù)
1 gc ( )
因?yàn)?R 是在內(nèi)存中運(yùn)算,所以當(dāng) R 讀入了體積比較大的數(shù)據(jù)后,,即使刪除了相關(guān)對(duì)象,,內(nèi)存空間
仍不能釋放。gc() 函數(shù)雖然主要用來(lái)報(bào)告內(nèi)存使用情況,,但是一個(gè)重要的用途便是釋放內(nèi)存。
151. 用什么文本編輯器比較好,?
比較常用的是 Tinn–R ,,RWinEdt 9 ,ESS(Emacs Speaks Statistics) ,,甚至任意一款編輯器,,如
UltraEdit10,這些都支持 R 語(yǔ)法的高亮顯示,。如果是 Windows 桌面環(huán)境下的用戶,,對(duì)這些不是很
了解,記事本也不失為一種選擇,。
9下載,、安裝 WinEdt 后,在 R 中安裝 RWinEdt 包即可使用
10需要下載,、修改 wordfile
35
附錄 A Sweave 例
\documentclass[CJK]{cctart}
\usepackage{verbatim}
\title{Sweave 實(shí)例}
\author{}
\date{}
\SweaveOpts{echo=FALSE}
\begin{document}
\maketitle
使用 Sweave 可以很容易地將 \LaTeX{} 同 R 的代碼混排文檔轉(zhuǎn)化為可
編譯的 \LaTeX{} 文檔,。
在這種混排的文檔里,基本結(jié)構(gòu)仍然是 \LaTeX{} 形式的,,唯一的區(qū)別是,,
R 代碼需要放置在以 $<<>>=$ 為開(kāi)頭,$@$為結(jié)尾的段落里面,。開(kāi)頭部分
有兩個(gè)常用的參數(shù):echo和fig,使用邏輯值分別表示是否將 R 代碼輸入
作為 \LaTeX{} 文本輸出,;是否在 \LaTeX{} 文檔中繪制圖形。
這篇文檔只需要在 R 中編譯一遍,,即可形成\LaTeX{}需要的輸出(文件),。
下面是一個(gè)配對(duì) t 檢驗(yàn)的一個(gè)例子:
<>=
require(stats)
## Student’s paired t-test
m <- t.test(extra ? group, data = sleep, paired = TRUE)
print(m)
@
R 在計(jì)算過(guò)程中生成的的中間結(jié)果很容易插入到標(biāo)準(zhǔn)文檔,
比如\texttt{sleep}數(shù)據(jù)的雙樣本的配對(duì)t檢驗(yàn)結(jié)果
中的$p$-value是\Sexpr{format.pval(m$p.value)},;
或者是直接運(yùn)算
<>=
choose(49,6)
@
美國(guó)威力球(類(lèi)似于福彩雙色球)的理論組合數(shù)等于\Sexpr{choose(49,6)},。
通過(guò)這種方法處理‘‘有大量計(jì)算’’的文檔,比 word 不知方便多少倍,。
36
R 代碼中可以隨意寫(xiě)注釋?zhuān)@些注釋默認(rèn)不會(huì)被輸出,。如果要求輸出注釋?zhuān)?br>抱歉,,現(xiàn)在還沒(méi)有更好的解決辦法。
使用 Sweave 還可以將 R 生成的圖形加入到 \LaTeX{} 文檔中,,而不必事先
做出 \LaTeX{} 需要的圖形文件\footnote{Sweave會(huì)自動(dòng)生成 ps 和 pdf 圖形},。
下圖是根據(jù)Titanic號(hào)海難中人員的經(jīng)濟(jì)狀況、性別,、年齡和是否存活四
個(gè)變量繪制的馬賽克圖:
<>=
require(graphics)
mosaicplot(Titanic, main = 'Survival on the Titanic')
@
\end{document}
Copyright c?2008 R and all the Contributors to R FAQ. All rights reserved.
R 以及 R FAQ 的作者擁有版權(quán) c?2008,。保留所有權(quán)利。
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free
Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with the
Invariant Sections being Contributors, no Front-Cover Texts, and no Back-Cover Texts.
你可以拷貝,、發(fā)布或者修改這份文檔,,但必須遵守 自由軟件組織 頒布的 GNU 自由文檔許可證 1.2 或者以后版本
的條款。Invariant Sections 包括 Contributors,,沒(méi)有 Front-Cover Texts 和 Back-Cover Texts,。
37
索 引
Symbols
\\ . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
.packages . . . . . . . . . . . . . . . . . . . . . 6
/ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
%*% . . . . . . . . . . . . . . . . . . . . . . . . 15
?. . . . . . . . . . . . . . . . . . . . . . . . .16, 30
{} . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
A
abline . . . . . . . . . . . . . . . . . . . . . . . 20
aggregate . . . . . . . . . . . . . . . . . . . . 13
any . . . . . . . . . . . . . . . . . . . . . . . . . . 11
aov . . . . . . . . . . . . . . . . . . . . . . . . . . 30
aperm . . . . . . . . . . . . . . . . . . . . . . . 12
append . . . . . . . . . . . . . . . . . . . . . . 10
apply. . . . . . . . . . . . . . . . .12, 16, 25
as.Date . . . . . . . . . . . . . . . . . . . . . . 18
as.numeric . . . . . . . . . . . . . . . . . . . 20
as.POSIXct . . . . . . . . . . . . . . . . . . 18
axes . . . . . . . . . . . . . . . . . . . . . . . . . 21
axis. . . . . . . . . . . . . . . . . . . . . . . . . .21
B
barplot . . . . . . . . . . . . . . . . . . . . . . 23
boxcox. . . . . . . . . . . . . . . . . . . . . . .33
bptest . . . . . . . . . . . . . . . . . . . . . . . 33
Breusch-Pagan. . . . . . . . . . . . . . .33
C
cancor . . . . . . . . . . . . . . . . . . . . . . . 33
capture.output . . . . . . . . . . . . . . . . 8
car . . . . . . . . . . . . . . . . . . . . . . . . 7, 33
casefold. . . . . . . . . . . . . . . . . . . . . .17
choose . . . . . . . . . . . . . . . . . . . . . . . 16
citation . . . . . . . . . . . . . . . . . . . . . . . 3
clipboard . . . . . . . . . . . . . . . . . . . . . 8
cluster . . . . . . . . . . . . . . . . . . . . . . . 29
cm.colors . . . . . . . . . . . . . . . . . . . . 23
col . . . . . . . . . . . . . . . . . . . . . . . . . . .23
col2rgb . . . . . . . . . . . . . . . . . . . . . . 23
colMeans . . . . . . . . . . . . . . . . . . . . 16
colors . . . . . . . . . . . . . . . . . . . . . . . . 23
combn . . . . . . . . . . . . . . . . . . . . . . . 16
Commander . . . . . . . . . . . . . . . . . 34
complex . . . . . . . . . . . . . . . . . . . . . 15
confint. . . . . . . . . . . . . . . . . . . . . . .31
confint.glm . . . . . . . . . . . . . . . . . . 31
confint.nls . . . . . . . . . . . . . . . . . . . 31
contour . . . . . . . . . . . . . . . . . . . . . . 25
crossprod . . . . . . . . . . . . . . . . . . . . 15
cumsum. . . . . . . . . . . . . . . . . .12, 24
curve . . . . . . . . . . . . . . . . . . . . . . . . 24
cutree . . . . . . . . . . . . . . . . . . . . . . . 29
D
D. . . . . . . . . . . . . . . . . . . . . . . . . . . .16
data . . . . . . . . . . . . . . . . . . . . . . . . . . 6
data frame . . . . . . . . . . . . . . . . 6, 12
demo . . . . . . . . . . . . . . . . . . . . . . . . . 3
detach . . . . . . . . . . . . . . . . . . . . . . . . 5
dev.copy . . . . . . . . . . . . . . . . . . . . . 24
dev.cur . . . . . . . . . . . . . . . . . . . . . . 22
dev.list . . . . . . . . . . . . . . . . . . . . . . 22
dev.off . . . . . . . . . . . . . . . . . . . . . . . 22
dev.set . . . . . . . . . . . . . . . . . . . . . . 22
Devices . . . . . . . . . . . . . . . . . . . . . . 22
diag . . . . . . . . . . . . . . . . . . . . . . . . . 15
difftime . . . . . . . . . . . . . . . . . . . . . . 18
duplicated . . . . . . . . . . . . . . . . . . . 12
durbin.watson . . . . . . . . . . . . . . . 32
dwtest . . . . . . . . . . . . . . . . . . . . . . . 32
E
edit . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
eigen . . . . . . . . . . . . . . . . . . . . . . . . 15
ESS . . . . . . . . . . . . . . . . . . . . . . . . . 35
eval. . . . . . . . . . . . . . . . . . . . . . . . . .10
F
factanal. . . . . . . . . . . . . . . . . . . . . .29
factorial . . . . . . . . . . . . . . . . . . . . . 16
FALSE . . . . . . . . . . . . . . . . . . . . . . 12
file.choose. . . . . . . . . . . . . . . . . . . . .9
filled.contour . . . . . . . . . . . . . . . . 25
fivnum. . . . . . . . . . . . . . . . . . . . . . .14
fix . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
format . . . . . . . . . . . . . . . . . . . . . . . 18
G
gc . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
getAnywhere. . . . . . . . . . . . . . . . . .7
getwd. . . . . . . . . . . . . . . . . . . . . . . . .5
glm. . . . . . . . . . . . . . . . . . . . . . . . . . 31
gray . . . . . . . . . . . . . . . . . . . . . . . . . 23
grep . . . . . . . . . . . . . . . . . . . . . . . . . 18
grey . . . . . . . . . . . . . . . . . . . . . . . . . 23
grid . . . . . . . . . . . . . . . . . . . . . . . . . 21
H
hat,hatvalues . . . . . . . . . . . . . . . . 31
hclust . . . . . . . . . . . . . . . . . . . . . . . 29
head . . . . . . . . . . . . . . . . . . . . . . . . . . 7
heat.colors . . . . . . . . . . . . . . . . . . . 23
help . . . . . . . . . . . . . . . . . . . . . . . . . . 3
help.search. . . . . . . . . . . . . . . . . . . .3
I
I . . . . . . . . . . . . . . . . . . . . . . . . . . . . .30
identical . . . . . . . . . . . . . . . . . . . . . 11
if . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
image. . . . . . . . . . . . . . . . . . . . . . . .25
integer . . . . . . . . . . . . . . . . . . . . . . .15
38
integrate. . . . . . . . . . . . . . . . . . . . .14
iris . . . . . . . . . . . . . . . . . . . . . . . . . . 20
is.na . . . . . . . . . . . . . . . . . . . . . . . . . 10
is.numeric . . . . . . . . . . . . . . . . . . . 13
J
jarque.bera.test . . . . . . . . . . . . . . 29
jpeg . . . . . . . . . . . . . . . . . . . . . . . . . 23
K
kmeans . . . . . . . . . . . . . . . . . . . . . . 28
ks.test . . . . . . . . . . . . . . . . . . . . . . . 29
L
latex . . . . . . . . . . . . . . . . . . . . . . . . . .9
latex.table . . . . . . . . . . . . . . . . . . . . 9
layout . . . . . . . . . . . . . . . . . . . . . . . 19
lda . . . . . . . . . . . . . . . . . . . . . . . . . . 33
legend . . . . . . . . . . . . . . . . . . . . . . . 20
letters . . . . . . . . . . . . . . . . . . . . . . . 23
Library . . . . . . . . . . . . . . . . . . . . . . . 5
library . . . . . . . . . . . . . . . . . . . . . . . . 5
lines . . . . . . . . . . . . . . . . . . . . . . . . . 24
list . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
lm . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
lmtest . . . . . . . . . . . . . . . . . . . . . . . 33
loadings . . . . . . . . . . . . . . . . . . . . . 29
lower.tri . . . . . . . . . . . . . . . . . . . . . 16
ls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
M
mai . . . . . . . . . . . . . . . . . . . . . . . . . . 19
mar . . . . . . . . . . . . . . . . . . . . . . . . . 19
matrix . . . . . . . . . . . . . . . . . . . 12, 16
memory.limit . . . . . . . . . . . . . . . . . 4
merge . . . . . . . . . . . . . . . . . . . . . . . 14
methods . . . . . . . . . . . . . . . . . . . . . . 7
N
nchar . . . . . . . . . . . . . . . . . . . . . . . . 18
ncv.test . . . . . . . . . . . . . . . . . . . . . .33
NULL . . . . . . . . . . . . . . . . . . . . . . . 12
O
optimize . . . . . . . . . . . . . . . . . . . . . 17
options . . . . . . . . . . . . . . . . . . . . . . . 4
outer . . . . . . . . . . . . . . . . . . . . . . . . 15
P
Package. . . . . . . . . . . . . . . . . . . . . . .5
par . . . . . . . . . . . . . . . 19, 21, 25, 26
parplot . . . . . . . . . . . . . . . . . . . . . . 26
parse . . . . . . . . . . . . . . . . . . . . . . . . 10
paste . . . . . . . . . . . . . . . . . . . . . .4, 17
pch . . . . . . . . . . . . . . . . . . . . . . . . . . 20
pdf . . . . . . . . . . . . . . . . . . . . . . . . . . 23
persp . . . . . . . . . . . . . . . . . . . . . . . . 25
pictex . . . . . . . . . . . . . . . . . . . . . . . 23
pie . . . . . . . . . . . . . . . . . . . . . . . . . . 21
plotmath . . . . . . . . . . . . . . . . . . . . 26
pmax . . . . . . . . . . . . . . . . . . . . . . . . 13
pmin . . . . . . . . . . . . . . . . . . . . . . . . 13
png . . . . . . . . . . . . . . . . . . . . . . . . . . 23
points . . . . . . . . . . . . . . . . . . . . . . . 19
poly . . . . . . . . . . . . . . . . . . . . . . . . . 31
postscript. . . . . . . . . . . . . . . . . . . .23
princomp . . . . . . . . . . . . . . . . . . . . 29
print . . . . . . . . . . . . . . . . . . . . . . . . . .9
proc.time . . . . . . . . . . . . . . . . . . . . 34
prompt . . . . . . . . . . . . . . . . . . . . . . . 4
Q
qda . . . . . . . . . . . . . . . . . . . . . . . . . . 33
qqnorm . . . . . . . . . . . . . . . . . . . . . . 25
qr.solve . . . . . . . . . . . . . . . . . . . . . . 33
Quantile Regression. . . . . . . . . .28
R
rainbow . . . . . . . . . . . . . . . . . . . . . 23
Rcmdr. . . . . . . . . . . . . . . . . . . . . . .34
read.table . . . . . . . . . . . . . . . . . . . . .8
read.xls . . . . . . . . . . . . . . . . . . . . . . . 8
rect. . . . . . . . . . . . . . . . . . . . . . . . . .26
Regular Expressions. . . . . .12, 18
rev . . . . . . . . . . . . . . . . . . . . . . . . . . 13
rgb . . . . . . . . . . . . . . . . . . . . . . . . . . 23
rm. . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
RMySQL . . . . . . . . . . . . . . . . . . . . 10
rnorm . . . . . . . . . . . . . . . . 17, 21, 24
RODBC . . . . . . . . . . . . . . . . . . . . . 10
rowMeans . . . . . . . . . . . . . . . . . . . 16
Rpad . . . . . . . . . . . . . . . . . . . . . . . . 34
rpart . . . . . . . . . . . . . . . . . . . . . . . . 32
RSiteSearch. . . . . . . . . . . . . . . . . . .3
RWinEdt . . . . . . . . . . . . . . . . . . . . 35
S
sample. . . . . . . . . . . . . . . . . . . . . . .13
save . . . . . . . . . . . . . . . . . . . . . . . . . . 5
save.image . . . . . . . . . . . . . . . . . . . . 5
savePlot . . . . . . . . . . . . . . . . . . . . . 23
scale . . . . . . . . . . . . . . . . . . . . . . . . . 14
screeplot . . . . . . . . . . . . . . . . . . . . .29
search . . . . . . . . . . . . . . . . . . . . . . . . 6
sem. . . . . . . . . . . . . . . . . . . . . . . . . .30
setwd . . . . . . . . . . . . . . . . . . . . . . . . . 5
shapiro.test . . . . . . . . . . . . . . . . . . 29
shell.exec . . . . . . . . . . . . . . . . . . . . . 4
show.error.messages . . . . . . . . . . 4
sink . . . . . . . . . . . . . . . . . . . . . . . . 8, 9
some. . . . . . . . . . . . . . . . . . . . . . . . . .7
sort. . . . . . . . . . . . . . . . . . . . . . . . . .21
source . . . . . . . . . . . . . . . . . . . . . . . . 9
spline . . . . . . . . . . . . . . . . . . . . . . . . 24
split.screen . . . . . . . . . . . . . . . . . . 19
sqrt. . . . . . . . . . . . . . . . . . . . . . . . . .16
stars . . . . . . . . . . . . . . . . . . . . . . . . . 22
stats . . . . . . . . . . . . . . . . . . . . . . . . . 29
stem. . . . . . . . . . . . . . . . . . . . . . . . . 21
39
step . . . . . . . . . . . . . . . . . . . . . . . . . 28
strwrap . . . . . . . . . . . . . . . . . . . . . . 21
subset . . . . . . . . . . . . . . . . . . . . . . . 11
substr . . . . . . . . . . . . . . . . . . . . . . . 18
summary . . . . . . . . . . . . . . . . . . . . 14
survfit . . . . . . . . . . . . . . . . . . . . . . . 33
Sweave . . . . . . . . . . . . . . . . . . . . . . 34
system. . . . . . . . . . . . . . . . . . . . . . . . 4
system.time . . . . . . . . . . . . . . 16, 34
T
t. . . . . . . . . . . . . . . . . . . . . . . . . . . . .15
t.test . . . . . . . . . . . . . . . . . . . . . . . . 28
table . . . . . . . . . . . . . . . . . . . . . . . . 27
tail . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
tapply . . . . . . . . . . . . . . . . . . . . . . . 13
terrain.colors . . . . . . . . . . . . . . . . 23
Tinn-R . . . . . . . . . . . . . . . . . . . . . . 35
tolower . . . . . . . . . . . . . . . . . . . . . . 17
topo.colors. . . . . . . . . . . . . . . . . . .23
toupper. . . . . . . . . . . . . . . . . . . . . .17
transform. . . . . . . . . . . . . . . . . . . . 12
tseries . . . . . . . . . . . . . . . . . . . . . . . 29
U
unique . . . . . . . . . . . . . . . . . . . . . . . 11
uniroot . . . . . . . . . . . . . . . . . . . . . . 16
update. . . . . . . . . . . . . . . . . . . . . . .27
update.packages . . . . . . . . . . . . . . 5
upper.tri . . . . . . . . . . . . . . . . . . . . .16
W
windows . . . . . . . . . . . . . . . . . . . . . 23
with . . . . . . . . . . . . . . . . . . . . . . . . . 20
X
xlsReadWrite . . . . . . . . . . . . . . . . . 8
xtable . . . . . . . . . . . . . . . . . . . . . . . . 9
40

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類(lèi)似文章 更多