零基础学 R语言

这篇博客介绍了R语言的基础,包括R的定义、环境安装、R语言的变量、数据类型、控制结构、函数、字符串、列表、矩阵、数组、因子、数据框、数据重塑以及绘图方法。内容覆盖了从R语言的安装到高级数据处理和图表制作,适合初学者入门学习。
摘要由CSDN通过智能技术生成

R语言

1.什么R?

  • R是用于统计分析、绘图的语言和操作环境(AT&T贝尔实验室开发的一种用来进行数据探索、统计分析和作图的解释型语言
  • R是基于S语言的一个GNU项目
  • 功能:数据存储和处理系统;数组运算工具(其向量、矩阵运算方面功能尤其强大);完整连贯的统计分析工具;优秀的统计制图功能;简便而强大的编程语言:可操纵数据的输入和输出,可实现分支、循环,用户可自定义功能贝尔实验室

2.怎么使用?

环境安装

https://cloud.r-project.org/bin/windows/base/ 或者百度

界面

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bXIuj4cc-1617272465327)(C:\Users\white\AppData\Roaming\Typora\typora-user-images\image-20210401103458427.png)]

3.怎么玩?

一.基础 R 语言的变量
  1. R 语言有效变量名称由字母,数字以及点号.或下划线_组成。变量名称以 字母或点开头。
  2. 变量赋值 最新版本的 R 语言的赋值可以使用左箭头 <-、等号 = 、右箭 头 -> 赋值:
> var.1 = c(1,2,3)
> print(var.1)
[1] 1 2 3
> var.2 <- c(1,2,3)
> print(var.2)
[1] 1 2 3 
> print(ls())  //查看已定义的变量可以使用 ls()函数:
[1] "var.1" "var.2"
> rm(var.2)   //删除变量可以使用 rm()函数
> print(ls())
[1] "var.1"
>cat(1,"+",1,"=",2)   //cat()函数拼接
1 + 1 = 2 

sink("r_test.txt", split=TRUE) # 控制台同样输出   //sink()函数可以把控制台输出的文字直接输出到文件中去:
for (i in 1:5)
print(i)
sink() #取消输出到文件
sink("r_test.txt", append=TRUE) # 控制台不输出,追加写入文件
print("RUNOOB")	

//从文件读入文字  但是如果纯粹的想将某个文件中的内容 读取为字符串,可以使用 readLines 函数

  • 数学运算符

  • 关系运算符 (向量之间的比较)

    v<-c(2,3,4,5)
    t<-c(1,2,6,7)
    print(v>t)
    [1] TRUE TRUE FALSE FALSE
    print(v<t)
    [1] FALSE FALSE TRUE TRUE
    print(v==t)
    [1] FALSE FALSE FALSE FALSE
    print(v!=t)
    [1] TRUE TRUE TRUE TRUE
    print(v>=t)
    [1] TRUE TRUE FALSE FALSE
    print(v<=t)
    [1] FALSE FALSE TRUE TRUE

    
    
  • 逻辑运算符 : 注意:# &&、||只对第一个元素进行比较

    • > v <- c(3,0,TRUE,2+2i)
      > t <- c(1,3,TRUE,2+3i)
      > print(v&&t)
      [1] TRUE
      > print(v||t)
      [1] TRUE
      > print(v|t)
      [1] TRUE TRUE TRUE TRUE
      
  • 赋值运算符

    • R 语言变量可以使用向左,向右或等于操作符来赋值
    • 向左赋值: <− = <<−
    • 向右赋值: −> = −>>
  • R 语言还包含了一些特别的运算符

    • : 冒号运算符,用于创建一系列数字的向量。

    • %in% 用于判断元素是否在向量里,返回布尔值,有的话返 回 TRUE,没有返回 FALSE。

    • %*% 用于矩阵与它转置的矩阵相乘。

    eg:

    > v <- 1:10
    > print(v)
     [1]  1  2  3  4  5  6  7  8  9 10
    > v1 <- 3
    > print(v1 %in% v)
    [1] TRUE
    
    //建立矩阵时注意nrow 与 矩阵是否时对应的关系,true必须大写
    
    > M = matrix(c(2,3,45,6,7),nrow  = 2,ncol = 3,byrow = true)
    Error in matrix(c(2, 3, 45, 6, 7), nrow = 2, ncol = 3, byrow = true) : 
      找不到对象'true'
    > M = matrix(c(2,3,45,6,7),nrow  = 2,ncol = 3,byrow = TRUE)
    Warning message:
    In matrix(c(2, 3, 45, 6, 7), nrow = 2, ncol = 3, byrow = TRUE) :
      数据长度[5]不是矩阵行数[2]的整倍
    > M = matrix(c(2,3,45,6,7,9),nrow  = 2,ncol = 3,byrow = TRUE)
    > t = M %*% t(M)
    > print(t)
         [,1] [,2]
    [1,] 2038  438
    [2,]  438  166
    
  • 数学函数

    • sqrt(n) n 的平方根10 exp(n) 自然常数 e 的 n 次方, log(m,n) m 的对数函数,返回 n 的几次方等于 m log10(m) 相当于 log(m,10)
    • round (n) 对 n 四舍五入取整 (n, m) 对 n 保留 m 位小数四舍五入 ceiling (n) 对 n 向上取整 floor (n) 对 n 向下取整
    • R 中的 round 函数有些情况下可能会"舍掉五
  • 概率分布函数:
    • dnorm(x, mean = 0, sd = 1, log = FALSE) 
      #的返回值是正态分布概 率密度函数值,比如 dnorm(z)则表示:标准正态分布密度函数 f(x)在 x=z 处的函数值。
      > dnorm(0)
      [1] 0.3989423
      
      pnorm(q, mean = 0, sd = 1, lower.tail = TRUE, log.p = FALSE) 
      #返回值是正态分布的分布函数值,比如 pnorm(z)等价于 P[X ≤ z] 
      > pnorm(0)
      [1] 0.5
      
      qnorm(p, mean = 0, sd = 1, lower.tail = TRUE, log.p = FALSE)
      #返回值是给定概率 p 后的下分位点。 (4)rnorm(n, mean = 0, sd = 1) 的返回值是 n 个正态分布随机数构成的 向量。
      > qnorm(0)
      [1] -Inf
      
      > rnorm(3,5,2)
      [1] 3.738724 3.633434 3.107824
      # 产生 3 个平均值为 5,标准差为 2 的正态随机数
      #这四个都是用来计算正态分布的函数。它们的名字都以 norm 结尾,
      #代表"正态分布"。分布函数名字的前缀有四种:
      #d - 概率密度函数
      #p - 概率密度积分函数(从无限小到 x 的积分)
      #q - 分位数函数
      #r - 随机数函数(常用于概率仿真
      
二.R 语言之数据类型

R 语言中的最基本数据类型主要有三种:

  • 数字:科学 ,一般
  • 逻辑:逻辑类型常量值只有 TRUE 和 FALSE。注意:R 语言区分大小写,true 或 True 不能代表 TRUE。
  • 文本:中常出现的字符串(String),常量用双引号包含。在 R 语言中,文本常量既可以用单引号包含,也可以用双引号包含
对象类型来分是以下 6 种(后面会详细介绍这几种类型):
向量 (vector),列表(list),矩阵(matrix),数组(array),因子(factor), 数据框(data.frame)。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gojJs4Nv-1617272465328)(D:\typora\working\R语言.assets\image-20210401113636905.png)]

  1. c()是一个创造向量的函数 :如果将一个二维向量和三维向量做运算,将失去数学意 义

    1. R 语言中的"下标"不代表偏移量,而代表第几个,之前讲述的常用的数学运算函数,如 sqrt 、exp 等,同样可以用 于对向量作标量运算。"向量"作为线性表结构,应该具备一些常用的线性 表处理函数

      > a = c(1,2,3)
      > a[2]  # 其他基本控制长度请查阅相关资料
      [1] 2
      #sort() rev() order()  
      
    2. 向量排序:order() 函数返回的是一个向量排序之后的下标向量

      sum 求和
      mean 平均值
      var 方差
      sd 标准差
      min/max 最大最小
      range 取值范围
    3. 向量生成 :

      1. 有间隙的等差数列,可以用 seq()

        seq(1, 9, 2)
        
      2. seq 还可以生成从 m 到 n 的等差数列,只需要指定 m, n 以及数列的 长度: > seq(0, 1, length.out=3) [1] 0.0 0.5 1.0

        seq(0, 1, length.out=3)
        
      3. rep 是 repeat(重复)的意思,可以用于产生重复出现的数字序列

        > rep(0, 5)
        
      4. NA 代表的是"缺失",NULL 代表的是"不存在"。NA 缺失就想占位符,代 表这里没有一个值,但位置存在。NULL 代表的就是数据不存在。

    4. 逻辑型向量

      > c(1, 2, 3) > 2
      [1] FALSE FALSE  TRUE
      
      > vector = c(10, 40, 78, 64, 53, 62, 69, 70)
      > print(vector[which(vector >= 50 & vector <70)])
      [1] 64 53 62 69
      #all() 用于检查逻辑向量是否全部为 TRUE,any() 用于检查逻辑向量是
      #否含有 TRUE。
      
    • 字符串:字符串数据类型本身并不复杂,注重介绍字符串的操作函数:
    toupper/tolower 转换为大/小写
    nchar 统计字节长度 nchar(“中文”, type=“bytes”) type=“char” 总计字符数量
    substr/substring 截取字符串 从 1 到 5 // 从 5 到结束
    as.numeric as.character 字符串转换为数字/字符串
    strsplit (“2019;10;1”, “;”) 分隔符拆分字符串
    gsub ("/", “-”, “2019/10/1”) gsub
    • 矩阵

      • 矩阵的生成:

        > v = c(1,2,3,4,5,6)
        > matrix(v,2,3)
             [,1] [,2] [,3]
        [1,]    1    3    5
        [2,]    2    4    6
        #如果想按行填充,需要指定 byrow 属性
        #矩阵中的每一个值都可以被直接访问
        > m1 = matrix(v,2,3,byrow=TRUE)
        > m1[2,3]
        [1] 6
        #矩阵通过字符串向量 每一个列和每一行都可以设定名称
        > colnames(m1) = c("x","y","z")
        > rownames(m1) = c("a","b")
        > m1
          x y z
        a 1 2 3
        b 4 5 6
        > m1[,"y"]    #y列
        a b 
        2 5 
        > m1["a",]    #a列
        x y z 
        1 2 3 
        
      • 矩阵的四则运算

        > m1 = matrix(c(2,4),1,2) (c(...),对应的行数,列数)
        > m2 = matrix(c(3,4),2,1)
        > m1 %*% m2
             [,1]
        [1,]   22
        #逆矩阵
        sovle(正常矩阵)
        > A = matrix(c(1, 3, 2, 4), 2, 2)
        > solve(A)
             [,1] [,2]
        [1,] -2.0  1.0
        [2,]  1.5 -0.5
        #apply() 函数可以将矩阵的每一行或每一列当作向量来进行操作
        > A &#
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值