D02-R語言基礎學習


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

我是尾巴~

人生在世,需要一點高於柴米油鹽的品相!

別失去希望,再堅持一下!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM