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