上一篇博文我们介绍了R的环境安装,现在我来正式了解R!!
第一部分:了解R语言的一些基础知识
1.什么是R语言呢?他可以做什么?
统计,可视化,数据挖掘,数据预处理等都可以使用R语言来做
-
产生:2位学者,初心数值统计,可视化
3.演进:开源(为成千上万互联网人提供了便利)
R语言发展非常快,重要应用:数据挖掘,数据预处理,大数据生态,R语言在语言使用排行榜排12
4.. R语言特点
4.1.R语言使用简单,支持基础使用(变量,数据类型,流程控制,函数)
函数:C语言
函数:Java jdk7版本之前基本没有函数概念,
jdk1.8 函数式编程 ,流式处理4.2.R语言IO ,从本地磁盘或者mysql读文件和写文件
4.3.R语言内部支持矢量化运算(python:numpy,pandas)
arr[1,2,3,4,5]求和的话
1
迭代式写法:
for(){
arr[i]+1
}
矢量化运算:arr + 1
经过性能测试:迭代式计算要比矢量化运算方式时间长
5.R语言支持sql-
R语言 VS 大数据
大数据生态系统1.0 (2014广泛使用)
面临问题:计算满,存储不稳定 ,国内引入了HADOOP
问题来了:如果想做分布式的数据分析的话,需要写很多MR程序
对程序员要求比较高,维护很难
解决方案:Hive,写hql分析分布式存储的数据
hive输入:hdfs原始数据
hive输出:分析时候的数据(规整:符合我们2维表格的结构)
问题是:大数据分析好的结果如何做可视化呀
如果想做可视化的话,hive分析好的数据迁移到关系型数据库(mysql)
解决方案: sqoop数据迁移(关系型数据库<->数据仓库)大数据2.0 : spark
最优化的时候执行时间和hadoop mapreuce对比 快10倍左右 !
R语言_VS_大数据.png
-
公司开发流程
领导分配任务(总监)(产品经理)
---老大(任务拆分)
---我 用户画像(用户人群划分【消费情况】)
我:任务是什么 ,不知道应该划分多少人群(群体)数据调研(HIVE): 开发代码想做对,产品有意义的话,前提数据调研做的很充分
mapreduce(慢)
hive hql (写法简单,慢)
spark core (快)(结果:文本数据csv,数据库|数据仓库的二维表)
spark sql (快) (结果:文本数据csv,数据库|数据仓库的二维表)
spark r (还可以) 【这个】 (数据分析之外,数据可视化)【1】
spark python (还可以)【这个】(数据分析之外,数据可视化)【3】产品经理开会:
老大 :
我 : 主开发 - 给产品经理做一个报告
我要划分几个人群,调研图表
测试 :
产品经理: 可以了,排期(1个月做完)
1.开发(scala[1] ,java[3])
2.自测
3.文档(开发文档,自测文档【代码测试,压力测试,资源性能测试】)
4.提测(测试人员:开发文档,自测文档)测试
5.测试提bug
6.解决bug
直到程序没有bug为止上线 : 预发环境(集群)【内部人员使用,一般一周】
发布到线上,所有用户都可以用了
100%
30%【*****】 数据调研 【模糊:在思考】
20%【*****】 开发【知道你要做什么】
10-20%【】 文档
提交测试:修改bug,准备上线【比较轻松】
8为什么要学习R语言 (开源的)
8.1.大数据数据调研能够用的到8.2.学术界里面很多学者有很多新的发现(有一个学者新的数据挖掘算法pkq
r语言不支持,但是这个算法确实很好用,学者可以把算法弄成一个包,把这个
包开源出去,成千上万的互联网人都可以使用了),R语言有丰富的包,并且使用很简答8.3.编译器(支持很多好用的功能)不算什么理由
-
第二部分 环境的设置
- 安装
R-3.5.0-win.exe 系统环境中R语言版本
不需要界面的:界面功能比较简单
RStudio-1.1.447.exe 编译器
2.RStudio-1.1.447.exe 编译器 四大模块简介
第一个模块 : 交互式控制台
交互式命令(左下角)
第二个模块 : 脚本(左上角)
第三个模块 : 环境面板
环境存在的变量,历史代码
第四个模块 : 环境面板
Files:工作空间
Plots:代码执行绘图之后,显示图像的区域
packages:包管理的区域
使用已存在的包,禁用已存在的包:打勾启用,勾选去掉禁用
下载功能
help:很好的使用文档说明
第三部分 基本语法
引言:我们学任何一门语言一般都是先写一个最简单的程序:
编程语言:helloworld
大数据计算框架:wordcount
命令行:
变量 <- value
v <- 123
输出:
![](https://img.haomeiwen.com/i20557576/e44d1095a02e9401.png)
右上角模块:
![](https://img.haomeiwen.com/i20557576/cb909d4c7992ebbb.png)
输出的三种方式:
![](https://img.haomeiwen.com/i20557576/63c7e5b5d707f97b.png)
> v <- 123
> v
[1] 123
> cat(v)
123
> print(v)
[1] 123
脚本编译区 :
python(解释性编程语言的身影)
特点:可以选中多行进行执行,并且执行单行语句
![](https://img.haomeiwen.com/i20557576/1cdc1829a6fc93cb.png)
在运行的时候,由于命令行里面不可以一次运行多行代码,所以我们一般在左上角的编辑区域来编写代码,当运行的时候,选中你所要运行的代码,单击run按钮即可。
注释 :
R语言编译器解释执行的,遇到注释的时候,会被程序忽略
1.单行注释
#体验R语言
str1 <- 'hello wrold'
str1
2. 不支持多行注释,3.5版本,我们想用多行注释
怎么办呢 ?
if(FALSE){
"这是一个多行注释
这个语言不支持多行注释
......"
注释的话就用#来注释,我使用的R版本是3.5的,目前还不支持多注释,但是不保证以后的版本不支持
思考:添加注释有什么用???
公司:1.程序交接,方便别人查看 [sql 1000行]
2.便于自己查看 ,便于自己后期维护代码 [sql 500行]
3.在什么地方写注释
小贴士:简洁
---文本说明(脚本)
#功能是什么:
#开发人是谁:
#时间开发的:
#版本v.1
---变量
#核心变量(关键中间变量)
---方法
#说明,当前方法作什么的
f = function(){
#里面有非常难理解代码,这个代码添加注释
#很常规的代码,不要加注释
}
第四部分(数据类型)
1.什么是数据类型呀?
1.
我们使用任何编程语言时候要对数值进行存储,变量
变量也要开辟内存空间,存储的是引用(数据类型对真实
存储数值的变量关系不大)
2.
值有影响,我们想在内存空间申请一个值,开辟内存空间,
空间开辟多大呢,取决于数据类型
有些时候需要保留数值 : 12 ,13,14
有时候需要保留 : “打篮球“,‘划船’
数据类型某种角度来看:可以合理规划内存,
内存在申请时候小于真实数值:丢失数据
内存在申请时候大于真实数值:浪费空间
3. 变量类型自动推断,赋值给变量的数据类型就是变量保存的类型
class(对象)
v = 1
v = TRUE
这个R语言和Java不太一样:
java数据类型 : 基础类型
引用类型
建议学习语言时候:多和其它语言对比,会学习的更好
-
常用的数据类型都有什么呢 ?
1.矢量(原子向量,复杂向量)有些人统称 向量【】
2.列表
3.矩阵
4.数组
5.因子
6.数据框[]1.向量(矢量) :
1.1原子向量:常用的有五种,一个值构成的向量原子向量
1.1.1逻辑型(logical):
> log <- TRUE
> log
[1] TRUE
> class(log)
[1] "logical"
![](https://img.haomeiwen.com/i20557576/0e60185171b1b315.png)
1.1.2数字型/数值型(numeric):
> num <- 1
> num
[1] 1
> class(num)
[1] "numeric"
> num2 <- 1.1
> cat(num2)
1.1
> class(num2)
[1] "numeric"
![](https://img.haomeiwen.com/i20557576/de3546097f5b154d.png)
1.1.3整数型(integer)
> int <- 1L
> int
[1] 1
> class(int)
[1] "integer
![](https://img.haomeiwen.com/i20557576/16536d749fc23b64.png)
1.1.4复数型(complex):
> com <- 2+2i
> com
[1] 2+2i
> class(com)
[1] "complex"
1.1.5字符型(character):
> ch <- 'hello'
> ch
[1] "hello"
> class(ch)
[1] "character"
1.1.6原型(raw)不常用,编码时候使用
> v <- charToRaw("hello")
> v
[1] 68 65 6c 6c 6f
> class(v)
[1] "raw"
编码:
1.序列化
跨网络传输数据
A端:对象编码 ---网络传输--- B端 反序列话
不同序列化方法会导致网络传输数据量不一样
2.信息论
衡量系统不确定性指标
复杂向量:由多个原子向量组成的向量就是复杂向量
创建方式一 (*)
> v
[1] 1 2 3 4 5 6 7 8 9 10
> class(v)
[1] "integer"
v <- 4.6 : 12.4 #这种方式课时可以的,步长是1
创建方式二
> v <- seq(1,5,by=0.5)
> v
[1] 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0
> class(v)
[1] "numeric"
seq还一个函数,类似于python 的range,by指定步长
R语言支持默认参数 | 参数起名字,就可以根据名字传递参
从1到5生成一个向量,向量步长是0.5 (python range)
第三种方式(*)
使用c()函数
> v <- c(12)
> v
[1] 12
> v <- c(1,2,3)
> v
[1] 1 2 3
> class(v)
[1] "numeric"
向量
向量的特点
有序:类似理解java,c数组一样,拥有索引
元素的类型统一:数值型 | 字符型 | 逻辑型 | 数字型
构建向量之后,向量在内存中真实存储的数值是相同类型的
构建向量的时候,数据类型不一定要一样
小案例:
构建向量的时候,输入全部是不同的类型
内存在开辟空间的时候,每个元素空间大小一样
实际会发生类型转换
> v <- c(1,1.1,"a",1+1i,TRUE)
> v
[1] "1" "1.1" "a" "1+1i" "TRUE"
> class(v)
[1] "character"
类型转换的小实验
总结:数据类型转换顺序
character > complex > numeric > integer > logical
整数 、数值、字符、复数、逻辑
v <- c(1L,1.1,"a",1+1i,TRUE) # "character"
v <- c(1L,1.1,1+1i,TRUE)#complex
v <- c(1L,1.1,TRUE) # numeric
v <- c(1L,TRUE) # integer
v <- c(TRUE) #logical
好啦,就简单介绍到这里吧,如你正刚开始学习R,希望对你有帮助!
网友评论