什么是R?
- 编程语言
- 统计绘图可视化
- 数据处理、清理和存储
- ......
什么是Rstudio?
- R语言的集成开发环境(R 的衣服)
特点:
- 友好的图形界面
- 优秀的学习环境
- 免费的科研工具
- 开源
1. Rstudio的正确打开方式
-
创建Project(文件 .Rproj存在目录为工作目录)
打开"Rstudio" -> File -> New Project -> New Directory -> New Project -> Directory name -> Create Project
检查:右上角会出现新建的project
-
创建脚本
File -> New File -> R Script
2. Rstudio 界面介绍
- 脚本编辑器:
- 进行脚本编辑,代码可视化,#进行注释;
- 逐行运行或者选中运行;
- 控制台:
-显示脚本运行和结果显示- 输出结果
- 报错: Error
- 警告:Warning
- "没反应" :
出现 > 表示运行完成;
未出现 > 小窗口右上角出现红色按钮,则根据具体情况终止或等待;
出现 + 表示命令不完整,补全或者ESC键退出;
出现提示信息则查看是否有报错(Error)没有则忽略;
出现问句,则要回答(首选拒绝,老师说让高冷一些);
3.与Rstudio 进行交互
- session (窗口):打开,关闭,重启Rstudio。
- 两种方式交互:
- 脚本编辑器
- 控制台窗口
4.打开、保存、关闭脚本
- 打开脚本:右下角文件面板单击 .R文件
-
如果乱码:File -> Reopen with Encoding... -> UTF-8 ->OK.
数据类型class()函数查看:
- 字符型(character):' ' 或者 " " 关键标志;
- 数值型(numeric):数字;
- 逻辑值(logical):TRUE FALSE NA(不知道)
- 比较运算:> , < , <= , >= ,== ,!=(不等于)
- 逻辑运算: & ,| , !(且,或,非)
注意:NULL 与 NA 的区别,NULL真的没有,NA 为未知
> 后面,摁 键盘↑,即可修改上一条命令;
5. 数据类型的转换与判断:
- as族函数实现数据类型之间的转换:
- as.numeric() 将其他数据类型转换成数值型:字符型数据" "内容位数字,逻辑值转换成0,1;
- as.logical() 将其他数据类型转换成逻辑型
- as.charactor()将其他数据类型转换成字符型
- 注意:数值1,0可转化成逻辑值TRUE,FALSE
- 只有部分字符串可以转化为数值和逻辑值
- is族函数,进行判断,返回值TRUE,FALSE:
- is.numeric() 判断是否为数值型
- is.logical() 判断是否为逻辑型
- is.charactor()判断是否为字符型
6.数据结构:
- 向量:数据框单独拿出一列或一行(一维),视为一个整体;只有一种数据类型,可以有重复值;
- 矩阵:二维数组,每个元素具有形同的数据类型。
- 数据框:约等于表格
- 列表(个人理解像进化树,或者电脑文件夹)
7.切换Rproject,询问是否将.Rdata文件保存?
- "."开头文件常做配置文件,系统自动隐藏,
.Rdata 是保存空间的默认文件;
.history 是保存的历史文件。
注意:如果打开Rstudio特别慢,则是因为.Rdata文件捣的鬼,找到并删除即可。
8.向量的生成:
- 用c()逐一放到一起,不能出现中文字符
- 连续的数字用“:”
- 有重复的用rep(),有规律的用seq(),随机数用rnorm
- 可以通过组合产生复杂向量
9. 对单个向量进行操作:
- 赋值
- <- 或 = 进行赋值
- tips:(x <-c(1,2,3))或 x <-c(1,2,3);x 赋值并显示变量x
- 简单数学计算
- 根据条件判断形成等长的逻辑向量
- 初级计算:
- max(x) #最大值
- min(x) #最小值
- range(x) #最大&最小值
- which.max(x) #最大值在变量x中的下标(位置)
- which.min(x)
- sort(x) #排序
- mean(x) #均值
- median(x) #中位数
- var(x) #方差
- sd(x) #标准差
- sum(x) #总和
- length(x) #长度
- unique(x) #去重复
- table(x) #去重并统计
10.对两个向量的操作
创建两个向量:x <- c(1,2,3) ; y <- c(1,3,5);
- 逻辑比较,生成等长的逻辑向量:x == y ;x %in% y #x的元素是否在y中
- 数据计算
- 连接:paste(x,y,sep":") #连接x,y 相同下标的元素以 :连接
- 交集、并集、差集:intersect(x,y); union(x,y);setdiff(x,y) #在x变量中存在,在y变量中不存在
- 当x,y两个向量不一样长时,采用循环补齐策略,可简化代码
11.向量筛选(取子集)[ ]:将TRUE对应的值挑出来,FALSE丢弃(动手试试下面代码)
- x = c(2,4,5,6,7)
- x[x==5]
- x[x<5]
- x[x%in%c(2,9)]
- x[4]
- x[2:4]
- x[c(1,3,5)]
- x[-4]
- x[-(2:4)]
12.修改向量中的某个/某些元素?
- 取子集+赋值