美文网首页R语言
R语言--基础(二)

R语言--基础(二)

作者: _凌浩雨 | 来源:发表于2018-11-21 17:44 被阅读13次
    1. 决策
    • 概述
      决策结构要求程序员指定要由程序评估或测试的一个或多个条件,以及如果条件被确定为真则要执行的一个或多个语句,如果条件为假则执行其他语句。
    Sr.No. 声明和描述
    1 if语句: 由一个布尔表达式后跟一个或多个语句组成
    2 if ... else语句: if语句后面可以有一个可选的else语句,当布尔表达式为false时执行
    3 switch语句: 允许根据值列表测试变量的相等性。
    • if语句


      图1.png
    # if语句
    x = 30L
    if(is.integer(x)) {
        print("X is an Integer")
    }
    

    打印结果:


    图2.png
    • if...else...语句


      图3.png
    # if...else...
    x = c("what", "is", "truth")
    if("Truth" %in% x) {
        print("Truth is found")
    } else {
        print("Truth is not found")
    }
    

    打印结果:


    图4.png
    • switch语句


      图5.png

      switch语句规则:
      -- 如果expression的值不是字符串,那么它被强制为整数。
      -- 在交换机中可以有任意数量的case语句。 每个案例后面都跟要比较的值和冒号。
      -- 如果整数的值在1和nargs() - 1(参数的最大数目)之间,则对case条件的相应元素求值并返回结果。
      -- 如果表达式求值为字符串,那么该字符串与元素的名称匹配。
      -- 如果有多个匹配,则返回第一个匹配元素。
      -- 无默认参数可用。
      -- 在没有匹配的情况下,如果有一个未命名的元素...它的值被返回。 (如果有多个这样的参数,则返回错误。)

    示例:

    # switch语句
    x = switch(
            3,
            "first",
            "second",
            "third",
            "fourth"
        )
    print(x)
    

    打印结果:


    图6.png
    2. 包
    • 包路径和查询包
    # 获取R包路径
    .libPaths()
    
    # 获取所有软件包列表
    library()
    
    图7.png 图8.png
    • 获取当前加载包
    # 获取当前R环境中加载的所有包
    search()
    

    打印结果:


    图9.png
    • 安装包
      I. 直接从CRAN安装
    # 从CRAN网页获取软件包
    install.packages("spe", repos="https://cran.cnr.berkeley.edu/")
    

    执行结果:

    图10.png
    II. 手动安装包
    下载安装包
    # 手动安装
    install.packages("C:\\Users\\mazaiting\\Desktop\\spec_0.1.3.zip", repos = NULL, type = "source")
    

    执行结果:


    图11.png
    • 装载包到库中
    library("package Name", lib.loc = "path to library")
    
    3. 循环
    • 循环种类
    Sr.No. 循环类型和描述
    1 repeat循环:多次执行一系列语句,并简化管理循环变量的代码。
    2 while循环:在给定条件为真时,重复语句或语句组。 它在执行循环体之前测试条件。
    3 for循环:像while语句,不同之处在于它测试在循环体的端部的条件。

    I. repeat循环


    图12.png

    示例:

    # repeat语句
    v = c("Hello","loop")
    cnt = 2
    
    repeat {
       print(v)
       cnt = cnt+1
       
       if(cnt > 5) {
          break
       }
    }
    

    打印结果:


    图13.png

    II. while循环


    图14.png

    示例:

    # while循环语句
    v = c("Hello","while loop")
    cnt = 2
    
    while (cnt < 7) {
       print(v)
       cnt = cnt + 1
    }
    

    打印结果:


    图15.png

    III. for循环


    图16.png

    示例:

    # for循环语句
    v <- LETTERS[1:4]
    for ( i in v) {
       print(i)
    }
    

    打印结果:


    图17.png
    • 循环控制语句
    Sr.No. 控制语句和描述
    1 break语句:终止循环语句,并将执行转移到循环后立即执行的语句。
    2 next语句:next语句模拟R语言switch语句的行为。

    I. break语句


    图18.png

    示例:

    # break语句
    v <- c("Hello","loop")
    cnt <- 2
    
    repeat {
       print(v)
       cnt <- cnt + 1
        
       if(cnt > 5) {
          break
       }
    }
    

    打印结果:


    图19.png

    II. next语句


    图20.png

    示例:

    # next语句
    v <- LETTERS[1:6]
    for ( i in v) {
       
       if (i == "D") {
          next
       }
       print(i)
    }
    

    打印结果:


    图21.png
    4. 数据重塑
    • 数据帧中加入列和行
      示例:
    # 数据帧加入列和行
    # 创建向量对象
    city = c("Tampa", "Seattle", "Hartford", "Denver")
    state = c("FL", "WA", "CT", "CO")
    zipcode = c(33602, 98104, 06161, 80294)
    # 将三个向量联合为一个数据帧
    addresses = cbind(city, state, zipcode)
    # 打印第一个输出提示
    cat("# # # # The first data frame 
    ")
    # 打印第一个数据帧
    print(addresses)
    # 创建另一个数据帧
    new.address = data.frame(
        city = c("Lowry", "Charlotte"),
        state = c("CO", "FL"),
        zipcode = c("80230", "33949"),
        stringsAsFactors = FALSE
    )
    # 打印第二个输出提示
    cat("# # # The Second data frame
    ")
    # 打印数据帧
    print(new.address)
    # 从数据帧中合并行
    all.addresses = rbind(addresses, new.address)
    # 打印第三个提示
    cat("# # # The combined data frame
    ")
    # 打印结果
    print(all.addresses)
    

    打印结果:


    图22.png
    • 合并数据帧
      示例:
    # 合并数据帧
    library(MASS)
    merged.Pima = merge(
        x = Pima.te, 
        y = Pima.tr,
        by.x = c("bp", "bmi"),
        by.y = c("bp", "bmi")
        # by.x = c("skin", "glu"),
        # by.y = c("skin", "glu")
    )
    # 打印合并后的数据
    print(merged.Pima)
    # 打印行数
    nrow(merged.Pima)
    

    打印结果:


    图23.png
    • 船舶数据集
    library(MASS)
    # 打印船舶数据集
    print(ships)
    

    打印结果:


    图24.png
    • melt()拆分数据
      示例:
    # 此包中提供melt()和cast(), 需要下载
    # install.packages("reshape2", repos = "https://cran.cnr.berkeley.edu/")
    # melt()拆分数据
    library(reshape2)
    library(MASS)
    
    molten.ships = melt(ships, id = c("type", "year"))
    print(molten.ships)
    

    打印结果:


    图25.png
    • dcast()数据重构
      示例:
    library(reshape2)
    library(MASS)
    
    molten.ships = melt(ships, id = c("type", "year"))
    # print(molten.ships)
    
    # dcast() 重构数据
    recasted.ship = dcast(molten.ships, type+year~variable,sum)
    print(recasted.ship)
    

    打印结果:


    图26.png
    5. 函数
    • 函数定义
      使用关键字函数创建R语言的函数。 R语言的函数定义的基本语法如下
    function_name <- function(arg_1, arg_2, ...) {
       Function body 
    }
    
    • 函数组件
      函数的不同部分 -
      函数名称 -这是函数的实际名称。 它作为具有此名称的对象存储在R环境中。
      参数 -参数是一个占位符。 当函数被调用时,你传递一个值到参数。 参数是可选的; 也就是说,一个函数可能不包含参数。 参数也可以有默认值。
      函数体 -函数体包含定义函数的功能的语句集合。
      返回值 -函数的返回值是要评估的函数体中的最后一个表达式。
    • 内置功能
    # 内置函数
    # 创建一串数字,从32到44
    print(seq(32, 44))
    
    # 中间数
    print(mean(25:82))
    
    # 从41加到68
    print(sum(41:68))
    

    打印结果:


    图27.png
    • 自定义函数
    # 用户定义的函数
    new.function <- function(a) {
        for (i in 1:a) {
            b <- i^2
            print(b)
        }
    }
    
    # 调用函数
    new.function(6)
    

    打印结果:


    图28.png

    代码下载

    相关文章

      网友评论

        本文标题:R语言--基础(二)

        本文链接:https://www.haomeiwen.com/subject/ccxsfqtx.html