你不能错过的R语言简单入门(向量定义及其基本使用)

2020-05-07  本文已影响0人  采星星的小太阳BavaLI

上一篇博文我们介绍了R的环境安装,现在我来正式了解R!!

第一部分:了解R语言的一些基础知识
1.什么是R语言呢?他可以做什么?
统计,可视化,数据挖掘,数据预处理等都可以使用R语言来做

  1. 产生: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

    1. 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
    2. 公司开发流程

      领导分配任务(总监)(产品经理)
      ---老大(任务拆分)
      ---我 用户画像(用户人群划分【消费情况】)
      我:任务是什么 ,不知道应该划分多少人群(群体)

      数据调研(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.编译器(支持很多好用的功能)不算什么理由

第二部分 环境的设置

  1. 安装
    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

输出:


image.png

右上角模块:


image.png
输出的三种方式:
image.png
> v <- 123
> v
[1] 123
> cat(v)
123
> print(v)
[1] 123

脚本编译区 :
python(解释性编程语言的身影)
特点:可以选中多行进行执行,并且执行单行语句


image.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. 常用的数据类型都有什么呢 ?
    1.矢量(原子向量,复杂向量)有些人统称 向量【
    2.列表
    3.矩阵
    4.数组
    5.因子
    6.数据框[
    ]

    1.向量(矢量) :
    1.1原子向量:常用的有五种,一个值构成的向量原子向量
    1.1.1逻辑型(logical):

> log <- TRUE
> log
[1] TRUE
> class(log)
[1] "logical"

1.1.2数字型/数值型(numeric):

> num <- 1
> num
[1] 1
> class(num)
[1] "numeric"
> num2 <- 1.1
> cat(num2)
1.1
> class(num2)
[1] "numeric"
image.png

1.1.3整数型(integer)

> int <- 1L
> int
[1] 1
> class(int)
[1] "integer
image.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,希望对你有帮助!

上一篇 下一篇

猜你喜欢

热点阅读