Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 1205|回复: 0

[默认分类] R语言学习之基础知识一

[复制链接]
  • TA的每日心情
    开心
    2021-12-13 21:45
  • 签到天数: 15 天

    [LV.4]偶尔看看III

    发表于 2018-7-8 11:42:00 | 显示全部楼层 |阅读模式

    1. R对象
             对象是R语言两个主要概念之一,另一个是函数。
            R对象可以看作是具有关联名称的存储空间。R中的一切都存储在对象中。所有的变量、数据、函数都以命名对象的形式存储在计算机的内存中。
            函数是R语言中一种特殊形式的对象,用来完成某个操作。函数可以接受一些输入参数,通过执行一系列操作产生结果。R已提供大量可用函数,用户也可以创建新的函数。
            R语言中对象赋值运算符:<-,也可以是=,但为防止与相等测试混淆,不推荐用=。如给对象x赋值,R命令行直接命令:

      >x <-945

    这样,就把数值945存储在名为x的对象中。只要在R命令行中输入对象的名词,就能看到它的内容,如输入:

      >x
      [1] 945

             数值前的“[1]”可以读作“此行是从对象的第一个元素开始显示的值”。这种形式看起来很眼熟,就是C、java等语言的数组形式。确实R语言中的对象可以表示向量,内含多个值,用此种表示方式非常有用。
             R语言的赋值操作也是“破坏性”的,即一个对象只能有一个给定的内容。如果将新的内容分配给当前对象,则该对象先前的内容会被覆盖。举例如下:

      > y <-39
      >y
      [1] 39
      > y <-67
      >y
      [1] 67

             R语言赋值操作支持数值表达式,此种情况下,对象存储表达式的计算结果:

      > z <- 5
      > w <-z^2
      >w
      [1] 25
      >i<- (z* 2 + 45) / 2
      >i
      [1] 27.5

             综合上述赋值运算,R语言赋值运算符都先计算右侧,然后把结果存储到左侧的对象中。
             如果只想知道某些算数运算的结果,那么不需要把表达式的结果赋给对象,即可将R环境当作计算器。本人在Ubuntu下经常这么做,非常方便快捷。

      > 34 + 90 /9
      [1] 44

             R可以将十六进制数转化为十进制数。

      > 0xf
      [1] 15
      > 0xff
      [1] 255
      > 0xffff
      [1] 65535

            值得注意的是:创建的每个对象都存储在计算机内存中,直到删除它。可通过命令ls()或objects()列举出当前内存中的对象。

      >ls()
      [1]"i" "w" "x" "y" "z"
      >objects()
      [1]"i" "w" "x" "y" "z"

             通过rm命令删除对象,可以一次删除一个,也可以一次删除多个。

      >rm(y)
      >rm(x,z)
      >ls()
      [1]"i" "w"

    删除一个不存在的对象,系统会发出警告信息。

      >rm(y)
      Warningmessage:
      In rm(y) :object "y" not found

             R语言的对象名称可以包含任何大、小写字母、数字0~9(不能用于开头)以及字母相似的符号“.”。注意:R中的名称是区分大小写的,这也是导致很多初学者遇到“找不到对象”错误的一个常见原因。
    2. 向量
             R中最基本的对象,有模式和长度两种属性。模式指的是存储类型,长度是包含的元素数量。R的基本数据类型有:字符型、逻辑型、数值型、复数型。注意:R的字符型事实上是一组字符,而非单个字符,类似其它语言的字符串类型。逻辑值只能是T(TRUE)和F(FALSE),True或False等不是有效的逻辑值,因为R中的名称是大小写敏感的。
             即使将单一数字赋值给对象,也会创建一个包含单个元素的向量,这个从前面的示例中就可以看出。
             R中使用c()函数和相应的参数来创建向量,length()查看元素数量,mode()查看数据类型。

      > v <-c(4, 7, 23.5, 76.2, 80)
      >v
      [1]  4.0 7.0 23.5 76.2 80.0
      >length(v)
      [1] 5
      >mode(v)
      [1]"numeric"

             一个向量所有元素必须属于相同的模式,如果不是,会进行强制类型转换。

      > v <-c(4, 7, 23.5, 76.2, 80, "rrt")
      > v
      [1]"4"    "7"    "23.5" "76.2""80"   "rrt"

             所有向量可以包含缺失值NA。

      > u <-c(4, 6, NA, 2)
      >u
      [1]  4  6NA  2
      > k <-c(T, F, NA, TRUE)
      > k
      [1]  TRUE FALSE   NA  TRUE

             可通过方括号索引访问向量中某个特定元素,也可以通过该方式改变某个特定元素值。

      > v[2]
      [1]"7"
      > v[1]
      [1]"4"
      > v[1]<- "hello"
      > v
      [1]"hello" "7"    "23.5" "76.2" "80"    "rrt"


             R允许创建空向量,且在不存在的索引处添加向量元素,可以改变向量长度。

      > x <-vector()
      >length(x)
      [1] 0
      >x[3] <-45
      >length(x)
      [1] 3
      > x
      [1] NA NA 45

    注意:向量未知值的使用,虽然灵活,但却是有代价的:在R中使用一个不存在的向量位置,不会报错。如下示例:

      >length(x)
      [1] 3
      > x[10]
      [1] NA
      > x[5]<- 4
      > x
      [1] NA NA 45NA  4

             利用赋值运算的破坏性,可以缩短向量大小。

      > v <-c(45, 243 , 78, 365, 5656, 334, 90, 23, 809)
      > v
      [1]   45 243   78  365 5656 334   90   23 809
      > v <-c(v[5], v[7])
      > v
      [1] 5656   90

    3. 向量化
             R语言最强大功能之一是函数的向量化,即函数直接对向量的每个元素进行操作。如:

      > v <-c(4, 7, 23.5, 76.2, 80)
      > x <-sqrt(v)
      > x
      [1] 2.0000002.645751 4.847680 8.729261 8.944272

    向量化函数输出一个与输入向量相同长度的结果向量。
             R语言支持向量的算术运算:

      > v1 <-c(4, 6, 87)
      > v2 <-c(34, 32.4, 12)
      > v1 + v2
      [1] 38.0 38.499.0

             如果两个向量的长度不同,则使用循环规则该规则重复较短的元素,直到得到的长度与较长向量的长度相同,如:

      > v1 <-c(4, 6, 8, 24)
      > v2 <-c(10, 2)
      > v1 + v2
      [1] 14  8 18 26

    如果较长向量的长度不是较短向量长度的整数倍,则R给出警告:

      > v1 <-c(4, 6, 8, 24)
      > v2 <-c(10, 2, 4)
      > v1 + v2
      [1] 14  8 12 34
      Warningmessage:
      In v1 + v2 : 长的对象长度不是短的对象长度的整倍数

             单个数字在R中表示为长度为1的向量,如:

      > v1 <-c(4, 6, 8, 24)
      > 2 * v1
      [1]  8 12 16 48

    数字2实际上是c(2)被循环,使得v1的所有元素都乘以2。
    注意:循环规则同样适用于数组和矩阵。
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-4-25 23:27 , Processed in 0.392316 second(s), 46 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表