R手册(Common)--R语言入门
**說明:**本節(jié)中大部分內(nèi)容摘自書籍《R語言實(shí)戰(zhàn)(第2版)》
文章目錄
- RStudio: Take control of your R code
- 數(shù)據(jù)處理一般流程
- R 數(shù)據(jù)結(jié)構(gòu)
- R 運(yùn)算符
- 概率函數(shù)
- 控制語句與循環(huán)語句
- 自定義函數(shù)
- 調(diào)試
- 擬合線性模型formula
- R語言可視化
- data.table 和 tidyverse
RStudio: Take control of your R code
RStudio是R的集成開發(fā)環(huán)境(IDE)。它包括一個(gè)控制臺,支持直接代碼執(zhí)行的語法高亮編輯器,以及繪圖,歷史記錄,調(diào)試和工作區(qū)管理工具。
RStudio可用于開源和商業(yè)版本,并可在桌面(Windows,Mac和Linux)或連接到RStudio Server或RStudio Server Pro(Debian / Ubuntu,RedHat / CentOS和SUSE Linux)的瀏覽器上運(yùn)行。
在 RStudio 下使用 R 的基本功能
RStudio參考卡片
數(shù)據(jù)處理一般流程
R 數(shù)據(jù)結(jié)構(gòu)
R擁有許多用于存儲數(shù)據(jù)的對象類型,包括標(biāo)量、向量、矩陣、數(shù)組、數(shù)據(jù)框和列表。
1. 向量
向量是用于存儲數(shù)值型、字符型或邏輯型數(shù)據(jù)的一維數(shù)組。
2. 矩陣
矩陣是一個(gè)二維數(shù)組,只是每個(gè)元素都擁有相同的模式(數(shù)值型、字符型或邏輯型)。
3. 數(shù)組
數(shù)組(array)與矩陣類似,但是維度可以大于2。
4. 數(shù)據(jù)框
由于不同的列可以包含不同模式(數(shù)值型、字符型等)的數(shù)據(jù),數(shù)據(jù)框的概念較矩陣來說更 為一般。
5. 因子
變量可歸結(jié)為名義型、有序型或連續(xù)型變量。名義型變量是沒有順序之分的類別 變量。有序型變量表示一種順序關(guān)系,而非數(shù)量關(guān)系。
類別(名義型)變量和有序類別(有序型)變量在R中稱為因子(factor)。因子在R中非 常重要,因?yàn)樗鼪Q定了數(shù)據(jù)的分析方式以及如何進(jìn)行視覺呈現(xiàn)。
6. 列表
列表(list)是R的數(shù)據(jù)類型中為復(fù)雜的一種。一般來說,列表就是一些對象(或成分, component)的有序集合。列表允許你整合若干(可能無關(guān)的)對象到單個(gè)對象名下。
mylist <- list(object1, object2, ...)7. 日期值
as.Date(x, "input_format")日期值的默認(rèn)輸入格式為yyyy-mm-dd。
mydates <- as.Date(c("2007-06-22", "2004-02-13"),"%Y-%m-%d")| %d | 數(shù)字表示的日期(0~31) | 01~31 |
| %a | 縮寫的星期名 | Mon |
| %A | 非縮寫星期名 | Monday |
| %m | 月份(00~12) | 00~12 |
| %b | 縮寫的月份 | Jan |
| %B | 非縮寫月份 | January |
| %y | 兩位數(shù)的年份 | 07 |
| %Y | 四位數(shù)的年份 | 2007 |
8. 索引和切片
以data.frame為例
| df[3,5] | |
| df['x'] | 返回x列,data.frame類型 |
| df$x , df[[x]] | 返回向量類型 |
| df[c(1,3,5), ] | |
| df[-(1:5),] | 除了1-5列(R 中-是排除的意思) |
| df[x>3,] | 邏輯索引 |
| df[x %in% c(3,5))] |
R 運(yùn)算符
| +, -, *, / | |
| ^, ** | 求冪 |
| x%%y | 求余(x mod y)。5%%2 的結(jié)果為 1 |
| x%/%y | 整數(shù)除法。5%/%2 的結(jié)果為 2 |
| 邏輯運(yùn)算 | |
| < ,<= | !x |
| > , >= | x \| y |
| == , != | x & y |
概率函數(shù)
在R中,概率函數(shù)統(tǒng)一格式為:[dpqr]distribution_abbreviation()
其中第一個(gè)字母表示其所指分布的某一方面:
| p | 分布函數(shù)(distribution function) | 分位數(shù)x值 | 概率值F(x)=P{X<=x} | pnorm(q) |
| d | 密度函數(shù)(density) | 分位數(shù)x值 | 密度值f(x)=dF/dx | dnorm(x) |
| q | 分位數(shù)函數(shù)(quantile function) | 概率P值 | 分位數(shù)x | qnorm§ |
| r | 生成隨機(jī)數(shù) | 隨機(jī)數(shù)n | 隨機(jī)向量密度值 | rnorm(n) |
概率分布
| Beta 分布 | beta | Logistic 分布 | logis |
| 二項(xiàng)分布 | binom | 多項(xiàng)分布 | multinom |
| 柯西分布 | cauchy | 負(fù)二項(xiàng)分布 | nbinom |
| (非中心)卡方分布 | chsiq | 正態(tài)分布 | norm |
| 指數(shù)分布 | exp | 泊松分布 | pois |
| F分布 | f | Wilcoxon 符號秩分布 | signrank |
| Gamma分布 | gamma | t分布 | t |
| 幾何分布 | geom | 均勻分布 | unif |
| 超幾何分布 | hyper | Weibull 分布 | weibull |
| 對數(shù)正態(tài)分布 | lnorm | Wilcoxon 秩和分布 | wilcox |
控制語句與循環(huán)語句
控制語句
if(cond) expr if(cond) cons.expr else alt.expr if...else if...else ifelse(test, yes, no)switch(expr, ...)expr:可以為一個(gè)數(shù)字或字符串...:為一系列選擇項(xiàng)列若expr為字符串,...列表項(xiàng)為name_i=expr_i若expr為數(shù)字,...列表項(xiàng)按順序輸出循環(huán)語句
for(var in seq) expr while(cond) expr repeat expr循環(huán)語句關(guān)鍵字
break:跳出整個(gè)循環(huán)語句
continue: 跳出本次循環(huán)
next:跳出本次loop
自定義函數(shù)
function( arglist ) {exprreturn(object) }… (dot-dot-dot):此特殊參數(shù)可以捕獲任何數(shù)量的參數(shù)
example:
>>>"%s*%" <- function(x,y) rep(x,y) #自定義二元符號 >>>"a"%s*%5 >>>"aaaaa"調(diào)試
| stop(message) | 停止執(zhí)行當(dāng)前表達(dá)式返回message(常與if配合檢查自定義函數(shù)參數(shù)) |
| stopifnot(logit1,logit2,logit3…) | 檢查每個(gè)參數(shù)為TRUE,否則停止執(zhí)行當(dāng)前表達(dá)式返回message |
擬合線性模型formula
在R中,擬合線性模型基本的函數(shù)就是lm(),格式為:
myfit <- lm(formula, data)
formula指要擬合的模型形式,
data是一個(gè)數(shù)據(jù)框,包含了用于擬合模型的數(shù)據(jù)。
結(jié)果對象(本例中是myfit)存儲在一個(gè)列表中,包含了所擬合模型的大量信息。
表達(dá)式(formula) 形式如下:
Y ~ X1 + X2 + ... + Xk
~左邊為響應(yīng)變量,右邊為各個(gè)預(yù)測變量,預(yù)測變量之間用+符號分隔。
| ~ | 分隔符,左邊為響應(yīng)變量,右邊為解釋變量 | |
| + | 預(yù)測變量分隔符 | y~x+y |
| : | 預(yù)測變量交互項(xiàng) | y~x+y+x:y |
| * | 包含所有交互項(xiàng)的簡潔方式 | 代碼y~ x * z可展開為y ~ x + z + x:z |
| ^ | 交互項(xiàng)的最高次數(shù) | 代碼 y ~ (x + z + w)^2 可展開為 y ~ x + z + w + x:z + x:w + z:w |
| .(dot) | 除因變量外的所有變量 | y~. |
| - | 移除一項(xiàng) | y~xzw–x:z:w可展開為 y ~ (x + z + w)^2 |
| -1 | 移除截距 | y~x-1 |
| I() | 算術(shù) | y~x+I(x^2) |
| function | 數(shù)學(xué)函數(shù) | log(y) ~ x + z + w |
R語言可視化
除了基礎(chǔ)圖形,grid、lattice和ggplot2軟件包也提供了圖形系統(tǒng),它們克服了R基礎(chǔ)圖 形系統(tǒng)的低效性,大大擴(kuò)展了R的繪圖能力。
- grid圖形系統(tǒng)可以很容易地控制圖形基礎(chǔ)單元,給予編程者創(chuàng)作圖形的極大靈活性。
- lattice包通過一維、二維或三維條件繪圖,即所謂的網(wǎng)格圖形(trellis graph)來對多元變量關(guān) 系進(jìn)行直觀展示。
- ggplot2包極大地?cái)U(kuò)展 了R繪圖的范疇,提高了圖形的質(zhì)量。
| base | 是 | 否 |
| grid | 是 | 是 |
| lattice | 是 | 是 |
| ggplot2 | 否 | 是 |
data.table 和 tidyverse
data.table
R語言data.table包是自帶包data.frame的升級版,用于數(shù)據(jù)框格式數(shù)據(jù)的處理,最大的特點(diǎn)快。
包括兩個(gè)方面,一方面是寫的快,代碼簡潔,只要一行命令就可以完成諸多任務(wù)。
另一方面是處理快,內(nèi)部處理的步驟進(jìn)行了程序上的優(yōu)化,使用多線程,甚至很多函數(shù)是使用C寫的,大大加快數(shù)據(jù)運(yùn)行速度。因此,在對大數(shù)據(jù)處理上,使用data.table無疑具有極高的效率。
tidyverse
tidyverse是一系列包的組合,構(gòu)建了一套完整的數(shù)據(jù)分析生態(tài)鏈,提供了一套整潔的數(shù)據(jù)導(dǎo)入,分析和建模方法,刷新了R語言原有的數(shù)據(jù)科學(xué)體系。
作者Hadley Wickham在R語言數(shù)據(jù)科學(xué)領(lǐng)域是個(gè)鼎鼎有名的大人物,被稱為一個(gè)改變了R的人。
總結(jié)
以上是生活随笔為你收集整理的R手册(Common)--R语言入门的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 编写一个能将给定非负整数列表中的数字排列
- 下一篇: 利用java进行制作淘宝卖家买家采集软件