從零開始的R語言學習記錄 05

2021-10-21 14:00:15 字數 4193 閱讀 4262

向量的元素要求同型別

列表可以組合多個不同型別的物件

普通向量「原子型」向量

列表「遞迴型」向量

>j <- list(name=

"joe"

,salary=

5000

,union=t)

>j

$name[1

]"joe"

$salary[1

]5000

$union[1

]true

salary標籤,r語言中列表各元件的名稱

> jalt <- list(

"joe"

,5000

,t)> jalt[[

1]][

1]"joe"[[

2]][

1]5000[[

3]][

1]true

一般來說推薦取名而不是使用預設名稱

> j$sal[1

]5000

在使用的時候,標籤的名稱可以簡寫

因為列表是向量,因此可以用vector()來建立列表

> z <- vector(mode=

"list"

)> z[

["abc"]]

<-

3> z

$abc[1

]3

列表索引,訪問列表的元件

> j$salary[1

]5000

> j[

["salary"]]

[1]5000

> j[[2

]][1

]5000

使用單中括號和雙中括號都可以提取列表的元素,但是使用單中括號返回的是乙個新的列表,它是源列表的子列表

> j[1:

2]$name[1

]"joe"

$salary[1

]5000

> j2 <- j[2]

> j2

$salary[1

]5000

> class(j2)[1

]"list"

> str(j2)

list of 1

$ salary: num 5000

雙重中括號「[[1:2]]」一次只能提取列表裡的乙個元件,返回值是元件本身的型別,不是列表

> j[[1

:2]]

error in j[[1

:2]]

: 下標出界

> j2a <- j[[2

]]> j2a[1

]5000

> class(j2a)[1

]"numeric"

涉及到由列表組成的資料型別,如資料框和r中的類(class),需要增加或刪除列表元素

列表建立之後可以新增新的元件

> z <- list(a=

"abc"

,b=12

)> z$a[

1]"abc"$b[

1]12> z$c <-

"sailing"

> z$a[

1]"abc"$b[

1]12$c[1

]"sailing"

還可以使用索引新增元件

> z[[4

]]<-

28> z[5:

7]<- c(

false

,true

,true

)> z$a[

1]"abc"$b[

1]12$c[1

]"sailing"[[

4]][

1]28[

[5]]

[1]false[[

6]][

1]true[[

7]][

1]true

要刪除列表元素可以直接把它的值設為null

> z$b <-

null

> z$a[

1]"abc"$c[

1]"sailing"[[

3]][

1]28[

[4]]

[1]false[[

5]][

1]true[[

6]][

1]true

刪掉z$b後,它之後的元素索引全部減1

還可以把多個列表拼接成乙個

> c(list(

"joe"

,55000

,t),list(5)

)[[1

]][1

]"joe"[[

2]][

1]55000[[

3]][

1]true[[

4]][

1]5

由於列表是向量,可以用length()得到列表的元件個數

> length(j)[1

]3

> names(j)[1

]"name"

"salary"

"union"

> ulj <- unlist(j)

> ulj

name salary union

"joe"

"5000"

"true"

> class(ulj)[1

]"character"

unlist()返回的值是乙個字串向量,向量的元素名稱來自原列表的標籤

> z <- list(a=

5,b=

12,c=13)

> y <- unlist(z)

> class(y)[1

]"numeric"

> y

a b c

51213

unlist()返回的值是乙個數值向量

> w <- list(a=

5,b=

"xyz"

)> wu <- unlist(w)

> class(wu)[1

]"character"

> wu

a b

"5""xyz"

優先順序排序:null> wun <- unname(wu)

> wun[1

]"5"

"xyz"

# 不用去掉wu的元素名

> names(wu)

<-

null

> wu[1

]"5"

"xyz"

#wu元素名設為null1:3

,25:29

),median)[[

1]][

1]2[

[2]]

[1]27

# 求中位數,返回列表1:

3,25:

29),median)[1

]227# 直接輸出矩陣

列表可以是遞迴的,即列表的元件也可以是列表

> b <- list(u=

5,v=12)

> c <- list(w=13)

> a <- list(b,c)

> a[[

1]][

[1]]

$u[1]

5[[1

]]$v[

1]12[

[2]]

[[2]

]$w[1

]13> length(a)[1

]2

拼接函式c()有乙個可選引數recursive,可把所有元件的元素都提取出來組合成乙個向量

> c(list(a=

1,b=

2,c=list(d=

5,e=9)

))$a[

1]1$b

[1]2

$c$c$d[1

]5$c$e[1

]9> c(list(a=

1,b=

2,c=list(d=

5,e=9)

),recursive=t)

a b c.d c.e

1259

從零開始的C語言學習記錄 02

型別 儲存大小 值範圍轉換說明 char 1 byte 128 到 127 或 0 到 255 c 字元 d 對應的ascii碼 unsigned char 1 byte 0 到 255 signed char 1 byte 128 到 127 int2 或 4 bytes 32,768 到 32,...

從零開始的c語言學習

從零開始的c語言學習 前言今天學習到分支開頭,主要為了解決輸入的字元是否與電腦預設字元相等的問題。內容陣列形式以char arr i 表示預設字串arr,其中代表的是長度。當以char yes 4 定義yes的時候,我等號右邊內容分別是 yes 輸出程式結果等價 開始不知道為什麼用括號形式一直報錯,...

從零開始的c語言學習

函式 函式分為庫函式和自定義函式,解決問題的時候大部分需要自己寫乙個函式。當寫乙個函式的時候,如果是指標形式 int pa 代表的是傳址呼叫,這時候函式是跟函式外面的值掛鉤的。如果是傳值呼叫 int a 值相當於是拷貝了乙份值,並不會影響函式外面的數值。函式外面給出值叫做實參,函式裡給的數值叫形參。...