R语言基础学习——D02
20190423内容纲要:
1、前言
2、向量操作
(1)常规操作
(2)不定长向量计算
(3)序列
(4)向量的删除与保留
3、列表详解
(1)列表的索引
(2)列表得元素属性
(3)更改列表元素
(4)删除列表元素
(5)合并两个列表
(6)将列表转换为向量
4、推荐
1、前言
怕什么真理无穷,进一寸有进一寸的欢喜。
先随便玩点什么?
>ls() #ls查看当前创建的变量,没有。那我们创建几个变量 >data <- c(1,2,3,4) >string <- "I like R" >ls() #那么如果想删除变量呢 >rm(data) >ls()
感觉跟linux命令太像了!有时间把linux的学习笔记整理一下!!!
下面说两个小技巧:
#(1)换行。 # 不要把一句话输完,缺一个括号啊什么的,回车它会显示一个“+”号,这样就可以接着写语句,算是换行了 >mylist <- list(stud.id=1234, + stud.name="Tom", + stud.marks=c(12, 3, 14, 25, 18)) #(2)清屏 Ctrl + L
2 向量操作
(1)常规操作
# 创建向量 >a <- c(1,2,3,4) #(1)查看长度length >length(a) #(2)查看类型mode >mode(a) #(3)数字类型强行转成字符型 >c <- c(1,2,3, "r") >mode(c) #(4)更改向量中的元素 >c[2] <- "test" >c #(5)可以对向量中的每一个元素都求平方根 >x <- c(4,8,6,7) >y <- sqrt(x) #(6)对向量进行加减计算当两个长度不等的向量相加会是怎样的呢??? >z <- x + y
(2)不定长向量计算
#(7)当两个长度不等的向量相加,不是补零,而是将短的循环与长的加一起!python中的广播?
#不同长度的向量相加时需要特别注意长的对象长度不是短的对象长度的整倍数
> x <- c(1, 1, 1, 1, 1) > y <- c(2, 2, 2) > z <- x + y Warning message: In x + y : 长的对象长度不是短的对象长度的整倍数 > x <- c(1, 1, 1, 1, 1, 1) > y <- c(2, 2, 2) > z <- x + y > z [1] 3 3 3 3 3
(3)序列
#(8)生成序列 #生成序列,从1开始10结束,步长为2 > x <- seq(1,10,2) > x [1] 1 3 5 7 9 #生成循环序列,序列数5,循环10 > x <- rep(5,10) > x [1] 5 5 5 5 5 5 5 5 5 5 #生成循环序列,序列数1:3,循环3次 > rep(1:3, 3) [1] 1 2 3 1 2 3 1 2 3 #生成10个均值为0,方差为1的随机数 > rnorm(10) [1] -1.6103872 -1.3784579 1.8143056 0.7482350 2.5612867 -1.5183595 -0.6851633 -1.0225507 0.2810904 0.1618640 #生成6个均值为6,方差为2的随机数 > rnorm(6, mean=6, sd=2) [1] 5.792479 7.257183 7.816276 5.060411 6.039296 3.343846
(4)删除和保留向量
#(9)删除向量中的一个元素 > x <- c(0, -3, 4, -1, 45, 98, -12) #只保留大于0的 > x[x>0] [1] 4 45 98 #只保留小于等于2或者大于5的 > x[x<=-2 | x>5] [1] -3 45 98 -12 #不要第五个 > x[-5] [1] 0 -3 4 -1 98 -12 #不要前三个 > x[-(1:3)] [1] -1 45 98 -12
3 列表详解
首先创建一个列表。增删改查都有。
> mylist <- list(stud.id=1234, + stud.name="Tom", + stud.marks=c(12, 3, 14, 25, 18)) > mylist $stud.id [1] 1234 $stud.name [1] "Tom" $stud.marks [1] 12 3 14 25 18
(1)查列表的索引(切片)
首先,R语言中的列表的索引(切片)不太一样,单、双括号都可以,提取的元素不一样。
此外,不是从0开始!不是从0开始!不是从0开始!
> x <- 1:1000
> length(x)
[1] 1000
#第一种 > mylist[[1]] [1] 1234 #第二种 > mylist[1] $stud.id [1] 1234 #第三种 > mylist$stud.id [1] 1234 > mylist[[0]] Error in mylist[[0]] : attempt to select less than one element in get1index <real>
(2)查列表的元素属性
#查看类型 > mode(mylist[[1]]) [1] "numeric" > mode(mylist[1]) [1] "list" #查看名称,其实也算是切片的一种。类似python中的字典,取key,上面的索引取value > names(mylist) [1] "stud.id" "stud.name" "stud.marks"
(3)更改列表元素
#添加元素 > mylist$parents <- c("man", "Jutice") > mylist $id [1] 1234 $names [1] "Tom" $marks [1] 12 3 14 25 18 $parents [1] "man" "Jutice"
(4)删除列表元素
> length(mylist) [1] 4 > mylist <- mylist[-4] > mylist $id [1] 1234 $names [1] "Tom" $marks [1] 12 3 14 25 18
(5)合并两个列表
> other <- list(age=19, sex="male") > other $age [1] 19 $sex [1] "male" > newlist <- c(mylist, other) > newlist $id [1] 1234 $names [1] "Tom" $marks [1] 12 3 14 25 18 $age [1] 19 $sex [1] "male"
(6)将列表变成一个向量unlist
> unlist(newlist) id names marks1 marks2 marks3 marks4 marks5 age sex "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
我是尾巴~
人生在世,需要一点高于柴米油盐的品相!
别失去希望,再坚持一下!