R語言基礎學習——D02 20190423內容綱要: 1、前言 2、向量操作 (1)常規操作 (2)不定長向量計算 (3)序列 (4)向量的刪除與保留 3、列表詳解 (1)列表的索引 (2)列表得元素屬性 (3)更改列表元素 (4)刪除列表元素 (5)合併兩個列表 (6)將列表轉換為向量 4、推薦 ...
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
我是尾巴~
人生在世,需要一點高於柴米油鹽的品相!
別失去希望,再堅持一下!