zoukankan      html  css  js  c++  java
  • 数据攻略●R语言自述

     

    (注明:以下文章均在Linux操作系统下执行)

    一、R语言简介

    R语言是用于统计分析,图形表示和报告的编程语言和软件环境。R语言由Ross Ihaka和Robert Gentleman在新西兰奥克兰大学创建,目前由R语言开发核心团队开发。

    R语言的核心是解释计算机语言,其允许分支和循环以及使用函数的模块化编程。R语言允许与以C,C ++,.Net,Python或FORTRAN语言编写的过程集成以提高效率。

    R语言在GNU通用公共许可证下免费提供,并为各种操作系统(如Linux,Windows和Mac)提供预编译的二进制版本。

    R是一个在GNU风格的副本左侧的自由软件,GNU项目的官方部分叫做GNU S.

    R的演变

    R语言最初是由新西兰奥克兰奥克兰大学统计系的Ross Ihaka和Robert Gentleman写的。 R语言于1993年首次亮相。

    一大群人通过发送代码和错误报告对R做出了贡献。

    自1997年年中以来,已经有一个核心组(“R核心团队”)可以修改R源代码归档。

    R的特点

    如前所述,R语言是用于统计分析,图形表示和报告的编程语言和软件环境。 以下是R语言的重要特点:

    R语言是一种开发良好,简单有效的编程语言,包括条件,循环,用户定义的递归函数以及输入和输出设施。

    R语言具有有效的数据处理和存储设施,

    R语言提供了一套用于数组,列表,向量和矩阵计算的运算符。

    R语言为数据分析提供了大型,一致和集成的工具集合。

    R语言提供直接在计算机上或在纸张上打印的图形设施用于数据分析和显示。

    作为结论,R语言是世界上最广泛使用的统计编程语言。 它是数据科学家的第一选择,并由一个充满活力和有才华的贡献者社区支持。 R语言在大学教授并部署在关键业务应用程序中。 本教程将教您R编程与适当的例子在简单和容易的步骤。

    二、R语言安装----Linux

    #进入root权限

    [root@local ~]# yum install epel-release

    #安装R

    [root@local ~]# yum install R

    二、安装Rstudio

    去官网下载一个https://www.rstudio.com/products/rstudio/download-server/

    我的系统是Centos 7 64bit。

    所以,我的是:

    $ wget https://download2.rstudio.org/rstudio-server-rhel-0.99.893-x86_64.rpm
    $ sudo yum install --nogpgcheck rstudio-server-rhel-0.99.893-x86_64.rpm

    在浏览器中输入:localhost:8787,端口默认的是8787,你也可以自己改!然后输入Linux的登录名和密码。

    三、R语言速写

    1、R语言基本定义

    R语言基本函数:https://www.douban.com/note/511740050/

    R语言的定义变量有两种方式:“=”与“<-”.

    >a = “hello”

    >print(a)

    [1] "hello"

    > a <- 'hello world'

    > print(a)

    [1] "hello world"

    注释:#My first R ,在R语言中不支持多行注释,但可以引用下面的格式:

    If(FALSE){

    " This is a

    multi-line comment!"

    }

    >A = “HELLO”

    >print (A)

    2、数据类型

    2.1、Logical(逻辑型)

    逻辑型只有两个--- TRUE, FALSE

     >v <- TRUE

    >print(class(v))

    [1] "logical"

    2.2、Numeric(数字)

     >v <-10.2

     >print(class(v))

     [1] "numeric"

    2.3、Integer(整型)

     这里的整型代表着长整型-----L

    >v <- 5L

    >print(class(v))

    [1] "integer"

    2.4、Complex(复合型)

    >v <- 2+5i

    >print(class(v))

    [1] "complex"

    2.5、Character(字符)

     >v <- "my name is Zhu"

     >print (class(v))

     [1] "character"

    2.6、Raw(原型)

     >v <- charToRaw("Hello")

    >print(class(v))

    [1] "raw"

    2.7、Vectors 向量

    当你想用多个元素创建向量时,你应该使用c()函数,这意味着将元素组合成一个向量。

     > a <- c('red','green','black')

     > print (a)

     [1] "red"   "green" "black"

     > print(class(a))

     [1] "character"

    2.8、Lists 列表

    列表是一个R对象,它可以在其中包含许多不同类型的元素,如向量,函数甚至其中的另一个列表。

     > listb <-list(c(2,3,4),22.5,'sin')

     > print(listb)

     [[1]]

     [1] 2 3 4

     [[2]]

     [1] 22.5

     [[3]]

     [1] "sin"

     > print(class(listb))

     [1] "list"

     > 

    2.9、Matrices 矩阵

    矩阵是二维矩形数据集。 它可以使用矩阵函数的向量输入创建。

     > M = matrix( c('a','a','b','c','b','a'), nrow = 2, ncol = 3, byrow = TRUE)

     > print (M)

     [,1] [,2] [,3]

     [1,] "a"  "a"  "b"

     [2,] "c"  "b"  "a"

     > M = matrix( c('a','a','b','c','b','a'), nrow = 2, ncol = 3, byrow = FALSE)

     > PRINT(M)

     Error in PRINT(M) : 没有"PRINT"这个函数

     > print(M)

      [,1] [,2] [,3]

     [1,] "a"  "b"  "b"

     [2,] "a"  "c"  "a"

     解释名词:nrow-->行、ncol-->列、byrow如果为TRUE则按行键入,为FALSE则按列键入。

    2.10、Arrays 数组

    虽然矩阵被限制为二维,但阵列可以具有任何数量的维度。 数组函数使用一个dim属性创建所需的维数。 在下面的例子中,我们创建了一个包含两个元素的数组,每个元素为3x3个矩阵。

     > a <- array(c('green','yellow'),dim = c(3,3,2))

     > print(a)

     , , 1

     [,1]     [,2]     [,3]   

     [1,] "green"  "yellow" "green"

     [2,] "yellow" "green"  "yellow"

     [3,] "green"  "yellow" "green"

     , , 2

     [,1]     [,2]     [,3]   

     [1,] "yellow" "green"  "yellow"

     [2,] "green"  "yellow" "green"

     [3,] "yellow" "green"  "yellow"

     dim函数可以创建多个形式的数组,所以剩下的可以自己尝试!

    2.11、Factors 因子

    因子是使用向量创建的r对象。它将向量与向量中元素的不同值一起存储为标签。标签总是字符,不管它在输入向量中是数字还是字符或布尔等。 它们在统计建模中非常有用。
    使用factor()函数创建因子。nlevels函数给出级别计数。

     > a <-c('one','one','two','three','two')

     > factor_b<-(a)

     > factor_b<-factor(a)

     > print(factor_b)

     [1] one   one   two   three two 

     Levels: one three two

     > print(nlevels(factor_b))

     [1] 3

     > 

    2.12、Data Frames 数据帧

    数据帧是表格数据对象。 与数据帧中的矩阵不同,每列可以包含不同的数据模式。 第一列可以是数字,而第二列可以是字符,第三列可以是逻辑的。 它是等长度的向量的列表。
    使用data.frame()函数创建数据帧。

     > Students <- data.frame(

     +  name = c("James","Boby","Jem"),

     +  sex = c("男","男","女"),

     +  age = c(23,24,20)

     + )

     > print(Students)

     name sex age

     1 James  男  23

     2  Boby  男  24

     3   Jem  女  20

     > 

    3、变量

    变量为我们提供了我们的程序可以操作的命名存储。 R语言中的变量可以存储原子向量,原子向量组或许多Robject的组合。 有效的变量名称由字母,数字和点或下划线字符组成。 变量名以字母或不以数字后跟的点开头。

    3.1、变量赋值

    可以使用向左,向右和等于运算符来为变量分配值。 可以使用print()或cat()函数打印变量的值。 cat()函数将多个项目组合成连续打印输出。

    # Assignment using equal operator.

    var.1 = c(0,1,2,3)           

     # Assignment using leftward operator.

    var.2 <- c("learn","R")  

     # Assignment using rightward operator.  

    c(TRUE,1) -> var.3

    cat ("var.1 is ", var.1 ,"")

    [1] 0 1 2 3

    var.1 is  0 1 2 3

    var.2 is  learn R

    var.3 is  1 1

    3.2、变量的数据类型

    在R语言中,变量本身没有声明任何数据类型,而是获取分配给它的R - 对象的数据类型。 所以R称为动态类型语言,这意味着我们可以在程序中使用同一个变量时,一次又一次地更改变量的数据类型。

    3.3、查找变量

    要知道工作空间中当前可用的所有变量,我们使用ls()函数。 ls()函数也可以使用模式来匹配变量名。

    > print(ls())

    [1] "BMI"      "Students" "var_x"    "var.3"  

    以点(.)开头的变量被隐藏,它们可以使用ls()函数的“all.names = TRUE”参数列出。

    3.4、删除变量

    可以使用rm()函数删除变量。 下面我们删除变量var.3。 打印时,抛出变量错误的值。

    > rm(var.3)

    > print(var.3)

    Error in print(var.3) : 找不到对象'var.3'

    4、运算符

    运算符是一个符号,通知编译器执行特定的数学或逻辑操作。 R语言具有丰富的内置运算符,并提供以下类型的运算符。

    运算符的类型

    R语言中拥有如下几种运算符类型:

    • 算术运算符
    • 关系运算符
    • 逻辑运算符
    • 赋值运算符
    • 其他运算符

    4.1、算数运算符

    正常的算数运算符 +、-、*、/ 与其他语言中无异,但在R语言中存在向量,所以算数运算符也会应用到向量中。关系运算符与逻辑运算符同上。

    4.2、赋值运算符

    R语言中的赋值存在左、右赋值。

    <- or <<- or = :为左分配。

    ->or ->> :为右分配。

    4.3、其他运算符

    “:”运算符,冒号运算符,它为向量按顺序创建一系列数字。

    > v = c(2:8)

    > print(v)

    [1] 2 3 4 5 6 7 8

    “%in%“ ,此运算符用于标记元素是否属于向量。

    >v1 <- 8

    >v2 <- 12

    >t <- 1:10

    >print(v1 %in% t)

    >print(v2 %in% t)

    TRUE

    FALSE

    “%*%”,此运算符用于将矩阵与其转置相乘

    M = matrix( c(2,6,5,1,10,4), nrow = 2,ncol = 3,byrow = TRUE)

    t = M %*% t(M)

    print(t)

    它产生以下结果 -

          [,1] [,2]

    [1,]   65   82

    [2,]   82  117

    5、决策

    R语言中的决策也就是我们所认知的if….else….

    5.1、If 语句

    > x <- 30L

    > if(is.integer(x)) {

    +    print("X is an Integer")

    + }

    [1] "X is an Integer"

    5.2、if….else….语句

    If….else…同理Java中的。

    5.3、switch语句

    switch语句允许根据值列表测试变量的相等性。 每个值都称为大小写,并且针对每种情况检查打开的变量。

    > x <- switch(

    +   3,

    + 'onr',

    + 'toe',

    + 'dasd'

    + )

    > print(x)

    [1] "dasd"

    6、包

    R语言的包是R函数,编译代码和样本数据的集合。 它们存储在R语言环境中名为“library”的目录下。 默认情况下,R语言在安装期间安装一组软件包。 随后添加更多包,当它们用于某些特定目的时。 当我们启动R语言控制台时,默认情况下只有默认包可用。 已经安装的其他软件包必须显式加载以供将要使用它们的R语言程序使用。

    7、循环

    7.1、repeat循环

    多次执行一系列语句,并简化管理循环变量的代码。

    v <- c("Hello","你好")

    cnt <- 2

    repeat {

      print(v)

      cnt <- cnt+1

      if(cnt > 5) {

        break

      }

    }

    结果:

    [1] "Hello" "你好"

    [1] "Hello" "你好"

    [1] "Hello" "你好"

    [1] "Hello" "你好"

    R语言的repeat循环是先进行执行语句在判断条件,直至条件为false,跳出循环体。

    7.2、R语言 While循环

    在给定条件为真时,重复语句或语句组。它在执行循环体之前测试条件。While循环一次又一次地执行相同的代码,直到满足停止条件。

    while循环的关键点是循环可能永远不会运行。当条件被测试并且结果为false时,循环体将被跳过,while循环之后的第一条语句将被执行。

    v <- c("Hello","while loop")

    cnt <- 2

    while (cnt < 7) {

      print(v)

      cnt = cnt + 1

    }

    While循环的顺序则为先判断条件,后进行循环体内的执行语句,它的关键点就是如果条件结果为false,则执行语句不会成功,循环体跳出!

    7.3、R语言 For循环

    像while语句,不同之处在于它测试在循环体的端部的条件。For循环是一种重复控制结构,允许您有效地编写需要执行特定次数的循环。

    v <- LETTERS[1:4]

    for ( i in v) {

      print(i)

    }

    [1] "A"

    [1] "B"

    [1] "C"

    [1] "D"

    7.4、循环控制语句

    循环控制语句从其正常序列改变执行。 当执行离开作用域时,在该作用域中创建的所有自动对象都将被销毁。

    break语句

    终止循环语句,并将执行转移到循环后立即执行的语句。

    next语句

    next语句模拟R语言switch语句的行为。R语言存在next语句,当我们想跳过循环的当前迭代而不终止它时便可使用next。 遇到next时,R解析器跳过本次迭代,并开始循环的下一次迭代。

    v = LETTERS[1:6]

    for(i in v){

      if(i == "D"){

        next

      }

      print(i)

    }

    未完待续.....。更多内容在QQ群(607021567)内有分享。

  • 相关阅读:
    python 数据结构--Set(集合)
    python 数据结构--Dictionary(字典)
    idea使用心得
    SpringBoot(一):构建第一个SpringBoot工程
    springboot服务的一些问题
    maven使用问题总结

    多线程学习三:Thread API,ThreadLocal,synchronized,volatile和Condition
    多线程学习二:线程池 ExecutorService
    多线程学习一:创建多线程的方式
  • 原文地址:https://www.cnblogs.com/zhuPython/p/9181883.html
Copyright © 2011-2022 走看看