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. 向量
向量是用于存储数值型、字符型或逻辑型数据的一维数组。
a <- c(1, 2, 5, 3, 6, -2, 4)
b <- c("one", "two", "three")
c <- c(TRUE, TRUE, TRUE, FALSE, TRUE, FALSE) d<-1:10 #生成1-10整数向量
2. 矩阵
矩阵是一个二维数组,只是每个元素都拥有相同的模式(数值型、字符型或逻辑型)。
myymatrix <- matrix(vector, nrow=number_of_rows,ncol=number_of_columns, byrow=logical_value, dimnames=list(char_vector_rownames, char_vector_colnames))
3. 数组
数组(array)与矩阵类似,但是维度可以大于2。
myarray <- array(vector, dimensions, dimnames)
4. 数据框
由于不同的列可以包含不同模式(数值型、字符型等)的数据,数据框的概念较矩阵来说更 为一般。
mydata <- data.frame(col1, col2, col3,...)
5. 因子
变量可归结为名义型、有序型或连续型变量。名义型变量是没有顺序之分的类别 变量。有序型变量表示一种顺序关系,而非数量关系。
类别(名义型)变量和有序类别(有序型)变量在R中称为因子(factor)。因子在R中非 常重要,因为它决定了数据的分析方式以及如何进行视觉呈现。
factor(x = character(), levels, labels = levels,exclude = NA, ordered = is.ordered(x), nmax = NA)
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")
format符号 | 含义 | 示例 |
---|---|---|
%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<-data.frame(x=1:10,y=rnorm(10, mean=0, sd=1))
用法 | 说明 |
---|---|
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 |
runif(n, min=0, max=1) #均匀分布
rnorm(n, mean=0, sd=1) #正态分布
控制语句与循环语句
控制语句
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
~
左边为响应变量,右边为各个预测变量,预测变量之间用+
符号分隔。
formula常用符号 | 说明 | 示例 |
---|---|---|
~ | 分隔符,左边为响应变量,右边为解释变量 | |
+ | 预测变量分隔符 | 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语言入门相关推荐
- R手册(Common)--tidyverse+tibble
tidyverse是一系列包的组合,构建了一套完整的数据分析生态链,提供了一套整洁的数据导入,分析和建模方法,刷新了R语言原有的数据科学体系. 文章目录 tidyverse Usage core ti ...
- 【R笔记】R语言函数总结
R语言与数据挖掘:公式:数据:方法 R语言特征 对大小写敏感 通常,数字,字母,. 和 _都是允许的(在一些国家还包括重音字母).不过,一个命名必须以 . 或者字母开头,并且如果以 . 开头,第二个字 ...
- 终于,我也出了篇R语言入门手册!
作者:周运来,男,长大了才会遇到的帅哥,稳健,潇洒,大方,靠谱.大型测序工厂的螺丝钉,一个R者,一个随机森林中靠统计觅食的人. 1. 什么是R语言 R语言是一个开源的数据分析环境,起初是由数位统计学家 ...
- 【万字长文】R语言入门学习路线与资源汇总
本篇推文就不介绍为什么需要学R了,你能打开这篇文章,说明你有学习R的想法或者正在学习R的路上. 今天简单介绍下R语言的学习路线以及R学习资源汇总. 下面涉及到的R语言书籍我打包了PDF文件,有需要的在 ...
- r语言x c(-1 -2),【软件】R语言入门之向量
"R语言入门开篇,向量(vector)相关知识的介绍" R语言是一款优秀统计学编程语言,本文介绍R语言的几个重要命令,以及R语言中非常重要的一种数据结构-向量(Vector)的相关 ...
- R语言入门4---R语言流程控制
流程控制语句在任何语言中都是非常重要的,通过流程控制语句编程者能够根据业务逻辑在程序中设计合理的循环.分支,实现程序各种各样强大的功能.一般实现任一算法的控制结构都可以分为顺序结构.分支结构.循环 ...
- R语言入门——常用函数50个
R语言函数入门50个基本函数 0引言 1.入门准备操作及函数 1.1R版本介绍以及IDE的选择 1.2IDE及其常用的快捷键 2.空间操作以及纠错函数 2.1 ? .??.help.demo.exam ...
- R语言入门——猜数小游戏
R语言入门--猜数小游戏 题目介绍 使用代码(2种方法) 运行结果 题目介绍 设计一个猜数字的游戏:计算机随机生成一个1~100 之间的整数,然后由用户猜测所产生的随机数.根据用户猜测的情况给出不同提 ...
- R语言入门第一集 R语言、RTools、RStudio的简介、安装与使用
R语言入门第一集!R语言.RTools.RStudio的简介.安装与使用! 一.简介:什么是R语言.RTools.RStudio? R语言 RStudio R 语言的集成开发环境 rtools是什么工 ...
最新文章
- Jupyter Notebook 基本使用
- UESTC 电子科大专题训练 数据结构 J
- python系统学习:函数积累(持续更新)
- 如何ping通服务器的公网IP?
- mssql mysql数据库大小_mssql查看数据库大小
- 不同网段Linux通过路由表,Linux服务器架设---《路由表配置,实现不同网段不同网卡之间的ping...
- python机械臂怎么控制_Python编程语言趣味学,EV3工业机械臂上线
- 单机rust怎么设置白天_安卓单机游戏评测:侠盗猎车手3十周年版本
- DB2 DIgits函数用法
- WPS图片精简版 Ver.3.0.5
- 代码review总结
- 微信小程序 video 播放大视频黑屏
- 为什么腾讯微云显示服务器繁忙,谁知道腾讯微云是干什么?
- nginx ajax 错误500,聊聊nginx报错499问题
- Spring Boot 2 精髓学习笔记(五)---Beetl 模板引擎(1)
- 拉格朗日插值和埃尔米特插值
- 新课改计算机论文,新课改论文
- 极大后验概率(MAP)- maximum a posteriori(转载)
- 什么是SAP ECC企业控制中心系统 ECC简介
- 微信聊天消息,好友转账消息的xml数据样本(分3种情况),以及各个字段含义