经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » R语言 » 查看文章
D02-R语言基础学习
来源:cnblogs  作者:m1racle  时间:2019/4/23 8:51:19  对本文有异议

R语言基础学习——D02

20190423内容纲要:

   1、前言

  2、向量操作

    (1)常规操作

    (2)不定长向量计算

    (3)序列

    (4)向量的删除与保留

  3、列表详解

    (1)列表的索引

    (2)列表得元素属性

    (3)更改列表元素

    (4)删除列表元素

    (5)合并两个列表

    (6)将列表转换为向量

  4、推荐

 

1、前言

怕什么真理无穷,进一寸有进一寸的欢喜。

先随便玩点什么?

  1. >ls()
  2. #ls查看当前创建的变量,没有。那我们创建几个变量
  3. >data <- c(1,2,3,4)
  4. >string <- "I like R"
  5. >ls()
  6. #那么如果想删除变量呢
  7. >rm(data)
  8. >ls()

 

感觉跟linux命令太像了!有时间把linux的学习笔记整理一下!!!

下面说两个小技巧:

  1. #(1)换行。
  2. # 不要把一句话输完,缺一个括号啊什么的,回车它会显示一个“+”号,这样就可以接着写语句,算是换行了
  3. >mylist <- list(stud.id=1234,
  4. + stud.name="Tom",
  5. + stud.marks=c(12, 3, 14, 25, 18))
  6. #(2)清屏
  7. Ctrl + L

 

 

2 向量操作

(1)常规操作

  1. # 创建向量
  2. >a <- c(1,2,3,4)
  3. #(1)查看长度length
  4. >length(a)
  5. #(2)查看类型mode
  6. >mode(a)
  7. #(3)数字类型强行转成字符型
  8. >c <- c(1,2,3, "r")
  9. >mode(c)
  10. #(4)更改向量中的元素
  11. >c[2] <- "test"
  12. >c
  13. #5)可以对向量中的每一个元素都求平方根
  14. >x <- c(4,8,6,7)
  15. >y <- sqrt(x)
  16. #(6)对向量进行加减计算当两个长度不等的向量相加会是怎样的呢???
  17. >z <- x + y

 (2)不定长向量计算

  1. #(7)当两个长度不等的向量相加,不是补零,而是将短的循环与长的加一起!python中的广播?
    #不同长度的向量相加时需要特别注意长的对象长度不是短的对象长度的整倍数
  2. > x <- c(1, 1, 1, 1, 1)
  3. > y <- c(2, 2, 2)
  4. > z <- x + y
  5. Warning message:
  6. In x + y : 长的对象长度不是短的对象长度的整倍数
  7. > x <- c(1, 1, 1, 1, 1, 1)
  8. > y <- c(2, 2, 2)
  9. > z <- x + y
  10. > z
  11. [1] 3 3 3 3 3

(3)序列

  1. #(8)生成序列
  2. #生成序列,从1开始10结束,步长为2
  3. > x <- seq(1,10,2)
  4. > x
  5. [1] 1 3 5 7 9
  6. #生成循环序列,序列数5,循环10
  7. > x <- rep(5,10)
  8. > x
  9. [1] 5 5 5 5 5 5 5 5 5 5
  10. #生成循环序列,序列数1:3,循环3次
  11. > rep(1:3, 3)
  12. [1] 1 2 3 1 2 3 1 2 3
  13. #生成10个均值为0,方差为1的随机数
  14. > rnorm(10)
  15. [1] -1.6103872 -1.3784579 1.8143056 0.7482350 2.5612867 -1.5183595 -0.6851633 -1.0225507 0.2810904 0.1618640
  16. #生成6个均值为6,方差为2的随机数
  17. > rnorm(6, mean=6, sd=2)
  18. [1] 5.792479 7.257183 7.816276 5.060411 6.039296 3.343846

(4)删除和保留向量

  1. #(9)删除向量中的一个元素
  2. > x <- c(0, -3, 4, -1, 45, 98, -12)
  3. #只保留大于0的
  4. > x[x>0]
  5. [1] 4 45 98
  6. #只保留小于等于2或者大于5的
  7. > x[x<=-2 | x>5]
  8. [1] -3 45 98 -12
  9. #不要第五个
  10. > x[-5]
  11. [1] 0 -3 4 -1 98 -12
  12. #不要前三个
  13. > x[-(1:3)]
  14. [1] -1 45 98 -12

 

3 列表详解

首先创建一个列表。增删改查都有。

  1. > mylist <- list(stud.id=1234,
  2. + stud.name="Tom",
  3. + stud.marks=c(12, 3, 14, 25, 18))
  4. > mylist
  5. $stud.id
  6. [1] 1234
  7. $stud.name
  8. [1] "Tom"
  9. $stud.marks
  10. [1] 12 3 14 25 18

(1)查列表的索引(切片)

首先,R语言中的列表的索引(切片)不太一样,单、双括号都可以,提取的元素不一样。

此外,不是从0开始!不是从0开始!不是从0开始!

 

  1. > x <- 1:1000
  2. > length(x)
  3. [1] 1000

 

  1. #第一种
  2. > mylist[[1]]
  3. [1] 1234
  4. #第二种
  5. > mylist[1]
  6. $stud.id
  7. [1] 1234
  8. #第三种
  9. > mylist$stud.id
  10. [1] 1234
  11.  
  12. > mylist[[0]]
  13. Error in mylist[[0]] :
  14. attempt to select less than one element in get1index <real>

(2)查列表的元素属性

  1. #查看类型
  2. > mode(mylist[[1]])
  3. [1] "numeric"
  4. > mode(mylist[1])
  5. [1] "list"
  6.  
  7. #查看名称,其实也算是切片的一种。类似python中的字典,取key,上面的索引取value
  8. > names(mylist)
  9. [1] "stud.id" "stud.name" "stud.marks"

(3)更改列表元素

  1. #添加元素
  2. > mylist$parents <- c("man", "Jutice")
  3. > mylist
  4. $id
  5. [1] 1234
  6. $names
  7. [1] "Tom"
  8. $marks
  9. [1] 12 3 14 25 18
  10. $parents
  11. [1] "man" "Jutice"

(4)删除列表元素

  1. > length(mylist)
  2. [1] 4
  3. > mylist <- mylist[-4]
  4. > mylist
  5. $id
  6. [1] 1234
  7. $names
  8. [1] "Tom"
  9. $marks
  10. [1] 12 3 14 25 18

(5)合并两个列表

  1. > other <- list(age=19, sex="male")
  2. > other
  3. $age
  4. [1] 19
  5. $sex
  6. [1] "male"
  7.  
  8. > newlist <- c(mylist, other)
  9. > newlist
  10. $id
  11. [1] 1234
  12. $names
  13. [1] "Tom"
  14. $marks
  15. [1] 12 3 14 25 18
  16. $age
  17. [1] 19
  18. $sex
  19. [1] "male"

(6)将列表变成一个向量unlist

  1. > unlist(newlist)
  2. id names marks1 marks2 marks3 marks4 marks5 age sex
  3. "1234" "Tom" "12" "3" "14" "25" "18" "19" "male"

 

4、推荐

  其实最近最近关于R语言的学习断了快半个月了,没怎么看这方面的。有时间整理一下PLC的资料!!!

推荐几个python实战项目吧。有时间可以试一试:别光说不做!!!

(1)python实战项目 | python制作天气查询软件  https://mp.weixin.qq.com/s/Yca8RM_ivxND48NVM4qffg

(2)python实战项目 | python创建微信机器人  https://mp.weixin.qq.com/s/LQ_4GcI9c_MeBTpQKc7eAg

我是尾巴~

人生在世,需要一点高于柴米油盐的品相!

别失去希望,再坚持一下!

 

原文链接:http://www.cnblogs.com/zhangkanghui/p/10692148.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号