向量的元素要求同型別
列表可以組合多個不同型別的物件
普通向量「原子型」向量
列表「遞迴型」向量
>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 值相當於是拷貝了乙份值,並不會影響函式外面的數值。函式外面給出值叫做實參,函式裡給的數值叫形參。...